<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Natural Progression</title>
	<atom:link href="http://naturalprogression.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://naturalprogression.wordpress.com</link>
	<description>A simple rule - Keep doing it, you&#039;ll improve</description>
	<lastBuildDate>Wed, 25 Jan 2012 19:49:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='naturalprogression.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Natural Progression</title>
		<link>http://naturalprogression.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://naturalprogression.wordpress.com/osd.xml" title="Natural Progression" />
	<atom:link rel='hub' href='http://naturalprogression.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Visual Studio &#8211; Clipboard Ring</title>
		<link>http://naturalprogression.wordpress.com/2012/01/16/visual-studio-clipboard-ring/</link>
		<comments>http://naturalprogression.wordpress.com/2012/01/16/visual-studio-clipboard-ring/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 13:15:19 +0000</pubDate>
		<dc:creator>naturalprogression</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://naturalprogression.wordpress.com/2012/01/16/visual-studio-clipboard-ring/</guid>
		<description><![CDATA[Very short, very useful tip &#8211; Visual Studio 2003 onwards has the concept of a &#8216;Clipboard Ring&#8217;. This means as well as the usual copy (CTRL+ C) &#38; paste (CTRL + V) operation, we can paste from a rolling list of the last 15 entries on the clipboard. More info:http://msdn.microsoft.com/en-us/library/aa301782%28v=vs.71%29.aspx  <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=naturalprogression.wordpress.com&amp;blog=5485195&amp;post=396&amp;subd=naturalprogression&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Very short, very useful tip &#8211; Visual Studio 2003 onwards has the concept of a &#8216;Clipboard Ring&#8217;. This means as well as the usual copy (CTRL+ C) &amp; paste (CTRL + V) operation, we can paste from a rolling list of the last 15 entries on the clipboard.</p>
<p>More info:<br /><a href="http://msdn.microsoft.com/en-us/library/aa301782%28v=vs.71%29.aspx">http://msdn.microsoft.com/en-us/library/aa301782%28v=vs.71%29.aspx</a></p>
<p> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/naturalprogression.wordpress.com/396/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/naturalprogression.wordpress.com/396/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/naturalprogression.wordpress.com/396/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/naturalprogression.wordpress.com/396/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/naturalprogression.wordpress.com/396/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/naturalprogression.wordpress.com/396/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/naturalprogression.wordpress.com/396/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/naturalprogression.wordpress.com/396/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/naturalprogression.wordpress.com/396/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/naturalprogression.wordpress.com/396/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/naturalprogression.wordpress.com/396/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/naturalprogression.wordpress.com/396/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/naturalprogression.wordpress.com/396/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/naturalprogression.wordpress.com/396/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=naturalprogression.wordpress.com&amp;blog=5485195&amp;post=396&amp;subd=naturalprogression&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://naturalprogression.wordpress.com/2012/01/16/visual-studio-clipboard-ring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/94137fa2aec7a48b31e37dd07b452628?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">naturalprogression</media:title>
		</media:content>
	</item>
		<item>
		<title>LINQ2SQL &#8211; Updating Stored Procedures (VS2008)</title>
		<link>http://naturalprogression.wordpress.com/2011/10/06/linq2sql-updating-stored-procedures-vs2008/</link>
		<comments>http://naturalprogression.wordpress.com/2011/10/06/linq2sql-updating-stored-procedures-vs2008/#comments</comments>
		<pubDate>Thu, 06 Oct 2011 12:18:35 +0000</pubDate>
		<dc:creator>naturalprogression</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[C# Tips]]></category>

		<guid isPermaLink="false">http://naturalprogression.wordpress.com/?p=370</guid>
		<description><![CDATA[I&#8217;m currently working on a project using LINQ2SQL with stored procedures. I quickly ended up with a problem that rang bells, remdinding me of when I last worked with LINQ2SQL and SPROCS (Some time back), that problem being that once a SPROC has been added to the DataContext, its not possible to (easily) update the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=naturalprogression.wordpress.com&amp;blog=5485195&amp;post=370&amp;subd=naturalprogression&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently working on a project using LINQ2SQL with stored procedures. I quickly ended up with a problem that rang bells, remdinding me of when I last worked with LINQ2SQL and SPROCS (Some time back), that problem being that once a SPROC has been added to the DataContext, its not possible to (easily) update the output of it, or the signiture.</p>
<p>I remember my previous fix to this was to rename the stored procedure and re-add it (Deleting the old one from the DataContext). This works fine on smaller systems with 1-2 developers &#8211; Renaming a Stored Procedure on a larger system may not alwasy be an option.</p>
<p>So, here is a better fix for this scenario &#8211; Its not elegant, and still irritating, but it does work&#8230;<br />
(Note: Only tested in Visual Studio 2008 &#8211; I dont know if this problem exists in Visual Studio 2010)</p>
<ol>
<li>Delete stored proc from DBML file</li>
<li>Close DBML file</li>
<li>Right click on DBML in solution explorer – Open with &gt; XML Editor then Save it (No need to make any changes)</li>
<li>Open DBML file as normal</li>
<li>Right click on SPROC in server explorer &gt; refresh (To ensure Visual Studio knows about the changes to your stored procedure)</li>
<li>Drag and Drop SPROC to your DBML to re-add it with the new signature/return type</li>
<li>Hoorah!</li>
</ol>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/naturalprogression.wordpress.com/370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/naturalprogression.wordpress.com/370/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/naturalprogression.wordpress.com/370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/naturalprogression.wordpress.com/370/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/naturalprogression.wordpress.com/370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/naturalprogression.wordpress.com/370/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/naturalprogression.wordpress.com/370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/naturalprogression.wordpress.com/370/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/naturalprogression.wordpress.com/370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/naturalprogression.wordpress.com/370/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/naturalprogression.wordpress.com/370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/naturalprogression.wordpress.com/370/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/naturalprogression.wordpress.com/370/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/naturalprogression.wordpress.com/370/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=naturalprogression.wordpress.com&amp;blog=5485195&amp;post=370&amp;subd=naturalprogression&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://naturalprogression.wordpress.com/2011/10/06/linq2sql-updating-stored-procedures-vs2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/94137fa2aec7a48b31e37dd07b452628?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">naturalprogression</media:title>
		</media:content>
	</item>
		<item>
		<title>CLEditor &#8211; JQuery WYSIWYG Editor</title>
		<link>http://naturalprogression.wordpress.com/2011/09/26/cleditor-jquery-wysiwyg-editor/</link>
		<comments>http://naturalprogression.wordpress.com/2011/09/26/cleditor-jquery-wysiwyg-editor/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 19:20:05 +0000</pubDate>
		<dc:creator>naturalprogression</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://naturalprogression.wordpress.com/?p=368</guid>
		<description><![CDATA[Only a snippet post, I had to say something about this&#8230;I&#8217;ve been working with CLEditor ver the last two weeks, which is a well designed, well built, open licenced JQuery WYSIWYG editor. Try it here&#8230;<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=naturalprogression.wordpress.com&amp;blog=5485195&amp;post=368&amp;subd=naturalprogression&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Only a snippet post, I had to say something about this&#8230;I&#8217;ve been working with <a href="http://premiumsoftware.net/cleditor/docs/GettingStarted.html">CLEditor</a> ver the last two weeks, which is a well designed, well built, open licenced JQuery WYSIWYG editor.</p>
<p><a href="http://premiumsoftware.net/cleditor/docs/GettingStarted.html">Try it here&#8230;</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/naturalprogression.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/naturalprogression.wordpress.com/368/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/naturalprogression.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/naturalprogression.wordpress.com/368/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/naturalprogression.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/naturalprogression.wordpress.com/368/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/naturalprogression.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/naturalprogression.wordpress.com/368/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/naturalprogression.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/naturalprogression.wordpress.com/368/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/naturalprogression.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/naturalprogression.wordpress.com/368/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/naturalprogression.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/naturalprogression.wordpress.com/368/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=naturalprogression.wordpress.com&amp;blog=5485195&amp;post=368&amp;subd=naturalprogression&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://naturalprogression.wordpress.com/2011/09/26/cleditor-jquery-wysiwyg-editor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/94137fa2aec7a48b31e37dd07b452628?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">naturalprogression</media:title>
		</media:content>
	</item>
		<item>
		<title>LINQ &#8211; Group by multiple columns, with join</title>
		<link>http://naturalprogression.wordpress.com/2011/09/22/linq-group-by-multiple-columns-with-join/</link>
		<comments>http://naturalprogression.wordpress.com/2011/09/22/linq-group-by-multiple-columns-with-join/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 12:29:24 +0000</pubDate>
		<dc:creator>naturalprogression</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[C# Tips]]></category>

		<guid isPermaLink="false">http://naturalprogression.wordpress.com/?p=365</guid>
		<description><![CDATA[In order to get data to drive a new report I was developing this morning, I needed a Group By query. I have done this before, but really could not remember the syntax, hence this post, for my furture reference, and hopefully helpful to others! Probably worth mentioning at this stage that I changed the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=naturalprogression.wordpress.com&amp;blog=5485195&amp;post=365&amp;subd=naturalprogression&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In order to get data to drive a new report I was developing this morning, I needed a Group By query. I have done this before, but really could not remember the syntax, hence this post, for my furture reference, and hopefully helpful to others!</p>
<p><pre class="brush: csharp;">
var result = (from tbl1 in YourDayaContext.Messages
                           join tbl2 in YourDayaContext.Table2 on tbl1.id equals tbl2.id
                           join tbl3 in YourDayaContext.Table3 on tbl2.id equals tbl3.id
                           group tbl1 by
                           new
                           {
                               tbl1.tbl1_Col1,
                               tbl1.tbl1_Col2,
                               tbl2.tbl2_Col1,
                               tbl3.tbl3_Col1,
                           } into g
                           where g.Count() &gt; 1
                           select new
                           {
                               g.Key.tbl1_Col1,
                               g.Key.tbl1_Col2,
                               g.Key.tbl2_Col1,
                               g.Key.tbl3_Col1,
                               Quantity = g.Sum(tbl1 =&gt; tbl1.tbl1_Col1)
                           });
</pre></p>
<p>Probably worth mentioning at this stage that I changed the vae/table/column names in the code above from a working version to protect my database schema security &#8211; I have not compiled/tested the above.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/naturalprogression.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/naturalprogression.wordpress.com/365/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/naturalprogression.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/naturalprogression.wordpress.com/365/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/naturalprogression.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/naturalprogression.wordpress.com/365/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/naturalprogression.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/naturalprogression.wordpress.com/365/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/naturalprogression.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/naturalprogression.wordpress.com/365/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/naturalprogression.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/naturalprogression.wordpress.com/365/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/naturalprogression.wordpress.com/365/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/naturalprogression.wordpress.com/365/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=naturalprogression.wordpress.com&amp;blog=5485195&amp;post=365&amp;subd=naturalprogression&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://naturalprogression.wordpress.com/2011/09/22/linq-group-by-multiple-columns-with-join/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/94137fa2aec7a48b31e37dd07b452628?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">naturalprogression</media:title>
		</media:content>
	</item>
		<item>
		<title>Transactional Linq2SQL</title>
		<link>http://naturalprogression.wordpress.com/2011/09/17/transactional-linq2sql/</link>
		<comments>http://naturalprogression.wordpress.com/2011/09/17/transactional-linq2sql/#comments</comments>
		<pubDate>Sat, 17 Sep 2011 10:31:55 +0000</pubDate>
		<dc:creator>naturalprogression</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://naturalprogression.wordpress.com/?p=362</guid>
		<description><![CDATA[I&#8217;ve now built 2 systems that use LINQ2SQL as the RDML. I&#8217;ve come to love LINQ and the power/speed it brings. To date, I have never had the need to be concerned with transactions on either of the two systems &#8211; Either the business logic did not require it, or it has been handled via [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=naturalprogression.wordpress.com&amp;blog=5485195&amp;post=362&amp;subd=naturalprogression&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve now built 2 systems that use LINQ2SQL as the RDML. I&#8217;ve come to love LINQ and the power/speed it brings. To date, I have never had the need to be concerned with transactions on either of the two systems &#8211; Either the business logic did not require it, or it has been handled via my exception handling framework, so have never really needed to know how transactions are handled when using LINQ2SQL.</p>
<p>I decided recently that I probably should know &#8211; As with most jobs/vocations, more knowledge equals better results, so spent a couple of lunch breaks investigating transactio management in LINQ2SQL.</p>
<p>It seems the best way (read &#8211; method that suits most common requirements) is to wrap the operations in a transaction scope:</p>
<p><pre class="brush: csharp;">
protected void ButtonGo_Click(object sender, EventArgs e)
{
	using (System.Transactions.TransactionScope transactionScope = new System.Transactions.TransactionScope())
	{
		Random random = new Random();
        int randomNumber = random.Next(1,1000);

        UpdateName(1, &quot;Apple &quot; + randomNumber.ToString());
        UpdateName(2, &quot;Orange Renamed &quot; + randomNumber.ToString());

        throw new ApplicationException(&quot;Error Occurred&quot;);

        transactionScope.Complete();
	}
}

private void UpdateName(int FruitID, String NewName)
{
	using (DataClassesDataContext db = new DataClassesDataContext())
{
	    Fruit fruitToRename = (from f in db.Fruits where f.ID == FruitID select f).FirstOrDefault();

            if (fruitToRename != null)
            {
	        fruitToRename.Name = NewName;
            }
            db.SubmitChanges(System.Data.Linq.ConflictMode.FailOnFirstConflict);
	}
}
</pre></p>
<p>Note that in the code above, I am making calls to a method (UpdateName) within the scope of the transaction. It is only when .Complete() is called that the changes are committed to the database. If UpdateName was called outside of the scope of an explicit transaction, LINQ2SQL would detect that there is no transaction on the thread, and generate its own implicit transaction.</p>
<p>Its also worth noting that I have purposely thrown an exception in the first block &#8211; This was to prevent transactionScope.Complete() from being called &#8211; In which case the changes are not committed to the database.</p>
<p>I  also tried the above code with a transaction scope wrapped around the changes made within &#8216;UpdateName&#8217; to see what transaction took precedence &#8211; As expected, the higher/earlier transaction had control, meaning no updates would be made to the database if any of the attempts caused an exception.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/naturalprogression.wordpress.com/362/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/naturalprogression.wordpress.com/362/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/naturalprogression.wordpress.com/362/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/naturalprogression.wordpress.com/362/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/naturalprogression.wordpress.com/362/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/naturalprogression.wordpress.com/362/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/naturalprogression.wordpress.com/362/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/naturalprogression.wordpress.com/362/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/naturalprogression.wordpress.com/362/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/naturalprogression.wordpress.com/362/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/naturalprogression.wordpress.com/362/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/naturalprogression.wordpress.com/362/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/naturalprogression.wordpress.com/362/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/naturalprogression.wordpress.com/362/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=naturalprogression.wordpress.com&amp;blog=5485195&amp;post=362&amp;subd=naturalprogression&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://naturalprogression.wordpress.com/2011/09/17/transactional-linq2sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/94137fa2aec7a48b31e37dd07b452628?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">naturalprogression</media:title>
		</media:content>
	</item>
		<item>
		<title>Visual Studio 2008 &#8211; Remote Debugging</title>
		<link>http://naturalprogression.wordpress.com/2011/09/17/visual-studio-2008-remote-debugging/</link>
		<comments>http://naturalprogression.wordpress.com/2011/09/17/visual-studio-2008-remote-debugging/#comments</comments>
		<pubDate>Sat, 17 Sep 2011 08:36:07 +0000</pubDate>
		<dc:creator>naturalprogression</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://naturalprogression.wordpress.com/?p=359</guid>
		<description><![CDATA[I was working on a project today which involved debugging a web service, being called from separate application which we also needed to debug at the same time (So we would workout what part of the system was playing up). The client application was already setup to call the web service on our test server. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=naturalprogression.wordpress.com&amp;blog=5485195&amp;post=359&amp;subd=naturalprogression&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I was working on a project today which involved debugging a web service, being called from separate application which we also needed to debug at the same time (So we would workout what part of the system was playing up).</p>
<p>The client application was already setup to call the web service on our test server. We wanted to retain this in order to replicate the production environment as closely as possible. The test server did not have visual studio installed, also, we wanted to run the web service via IIS &#8211; Not Visual Studios built in web server.</p>
<p>To allow us to debug from my desktop PC, I enabled remote debugging on the test server, allowing us to attach to th IIS application pool process</p>
<p>Here is how I did this:</p>
<ol>
<li>From the client machine, copy folder &#8216;Remote Debugger&#8217; from C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ to the server at any convenient location</li>
<li>Run the appropriate version (X86/x64) of the listener &#8211; &#8216;msvsmon.exe&#8217; on the server, found in the &#8216;Remote Debugger&#8217; folder &#8211; This needs to be run as Administrator (Right click, run as administrator)<br />
When it runs, you should see the log, with the first line showing:<br />
&#8216;MSVMON started a new server named &#8216;username@servername&#8217;. Waiting for new connections&#8217;</li>
<li>Your application will need to include PDB (Program Database) files &#8211; These include source file names, their lines and local variable names.<br />
See <a href="http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/05/11/pdb-files-what-every-developer-must-know.aspx" target="_blank">http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/05/11/pdb-files-what-every-developer-must-know.aspx</a> for a full explaination)<br />
If you are used to right clicking your project name and selecting publish to deploy your site/web project, be aware that this method will always compile a release build which will exclude the PDB files. Instead, you&#8217;ll need to use one of the following methods:</p>
<p>A) ASP.Net Compilation Tool:<br />
See<a href="http://msdn.microsoft.com/en-us/library/ms229863.aspx" target="_blank"> http://msdn.microsoft.com/en-us/library/ms229863.aspx</a> for details</p>
<p>B) Build in debug mode, and manually copy/ftp the files to the server.</li>
<li>You are now ready to commence debugging. Open Visual Studio on your client machine, select &#8216;Debug&#8217; &gt; &#8216;Attach to Process&#8217;. Transport should be set to &#8216;Default&#8217;. Enter the server name (The server you ran msvsmon.exe on) in the Qualifier box and hit enter. You will notice this will be resolved to username@servername</li>
<li>From the list of available processes, select W3WP.EXE and click &#8216;Attach&#8217;. You will recieve a security warning &#8211; Click &#8216;Attach&#8217;</li>
<li>If all has gone well, you should now be able to set a break point in your code, run the code (By opening the web site at its server/remote address) and see he break point hit.</li>
</ol>
<p>Worth Mentioning&#8230;</p>
<ul>
<li>In our scenario, we were running Windows 7 client machines connected to Windows Server 2008 Web Server</li>
<li>The code on the server needs to be the same as the code you arer using to debug &#8211; Otherwise line numbers will likely be out of sync, making debugging very difficult!</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/naturalprogression.wordpress.com/359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/naturalprogression.wordpress.com/359/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/naturalprogression.wordpress.com/359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/naturalprogression.wordpress.com/359/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/naturalprogression.wordpress.com/359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/naturalprogression.wordpress.com/359/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/naturalprogression.wordpress.com/359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/naturalprogression.wordpress.com/359/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/naturalprogression.wordpress.com/359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/naturalprogression.wordpress.com/359/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/naturalprogression.wordpress.com/359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/naturalprogression.wordpress.com/359/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/naturalprogression.wordpress.com/359/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/naturalprogression.wordpress.com/359/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=naturalprogression.wordpress.com&amp;blog=5485195&amp;post=359&amp;subd=naturalprogression&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://naturalprogression.wordpress.com/2011/09/17/visual-studio-2008-remote-debugging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/94137fa2aec7a48b31e37dd07b452628?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">naturalprogression</media:title>
		</media:content>
	</item>
		<item>
		<title>Lambda Loop</title>
		<link>http://naturalprogression.wordpress.com/2011/08/31/lambda-loop/</link>
		<comments>http://naturalprogression.wordpress.com/2011/08/31/lambda-loop/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 11:43:28 +0000</pubDate>
		<dc:creator>naturalprogression</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[C# Tips]]></category>

		<guid isPermaLink="false">http://naturalprogression.wordpress.com/?p=357</guid>
		<description><![CDATA[Very quick tip&#8230;instead of a &#8216;traditional&#8217; For Each loop: Consider a Lambda loop: The result is less code, more readable code (IMHO!) and having tested both with 10,000 strings in a list, it seems there is no impact on performance. You can of course filter the list using a Lambda expression, still on the 1 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=naturalprogression.wordpress.com&amp;blog=5485195&amp;post=357&amp;subd=naturalprogression&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Very quick tip&#8230;instead of a &#8216;traditional&#8217; For Each loop:</p>
<p><pre class="brush: csharp;">
foreach (String s in stringList)
{
    LabelOutput.Text += s + &quot;&lt;br/&gt;&quot;;
}
</pre></p>
<p>Consider a Lambda loop:</p>
<p><pre class="brush: csharp;">
stringList.ForEach(s =&gt; LabelOutput.Text += s + &quot;&lt;br/&gt;&quot;)
</pre></p>
<p>The result is less code, more readable code (IMHO!) and having tested both with 10,000 strings in a list, it seems there is no impact on performance.</p>
<p>You can of course filter the list using a Lambda expression, still on the 1 line of code:</p>
<p><pre class="brush: csharp;">
stringList.Where(s =&gt; s.Contains(foo)).ForEach(s =&gt; LabelOutput.Text += s + &quot;&lt;br/&gt;&quot;)
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/naturalprogression.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/naturalprogression.wordpress.com/357/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/naturalprogression.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/naturalprogression.wordpress.com/357/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/naturalprogression.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/naturalprogression.wordpress.com/357/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/naturalprogression.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/naturalprogression.wordpress.com/357/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/naturalprogression.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/naturalprogression.wordpress.com/357/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/naturalprogression.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/naturalprogression.wordpress.com/357/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/naturalprogression.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/naturalprogression.wordpress.com/357/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=naturalprogression.wordpress.com&amp;blog=5485195&amp;post=357&amp;subd=naturalprogression&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://naturalprogression.wordpress.com/2011/08/31/lambda-loop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/94137fa2aec7a48b31e37dd07b452628?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">naturalprogression</media:title>
		</media:content>
	</item>
		<item>
		<title>New Forest Marathon Vs Ibuprofen</title>
		<link>http://naturalprogression.wordpress.com/2011/07/25/new-forest-marathon-vs-ibuprofen/</link>
		<comments>http://naturalprogression.wordpress.com/2011/07/25/new-forest-marathon-vs-ibuprofen/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 18:54:53 +0000</pubDate>
		<dc:creator>naturalprogression</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[New Forest Marathon]]></category>
		<category><![CDATA[Running]]></category>

		<guid isPermaLink="false">http://naturalprogression.wordpress.com/2011/07/25/new-forest-marathon-vs-ibuprofen/</guid>
		<description><![CDATA[Not far into my New Forest Marathon training and I&#8217;ve hit a slight problem, in that I&#8217;ve gone and sprained my left ankle. A simple Sunday evening job in the garden turned into a visit to A&#38;E in the early hours of Sunday morning (Recommended time to go by the way &#8211; I was the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=naturalprogression.wordpress.com&amp;blog=5485195&amp;post=353&amp;subd=naturalprogression&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Not far into my New Forest Marathon training and I&#8217;ve hit a slight problem, in that I&#8217;ve gone and sprained my left ankle. A simple Sunday evening job in the garden turned into a visit to A&amp;E in the early hours of Sunday morning (Recommended time to go by the way &#8211; I was the only one there!).</p>
<p>I was sure I had broken my ankle &#8211; I turned on the ball of my left foot, managing to find a ditch in our lawn, lost my balance and rolled my foot inwards, putting my whole weight on my twisted ankle &#8211; I heard and felt a definite &#8216;snap&#8217; as I went down. The pain wasn&#8217;t terrible afterwards, but was much much worse when I woke at 2am this morning &#8211; Hence the visit to A&amp;E to check it wasn&#8217;t broken.</p>
<p>So &#8211; What next? 2 weeks rest minimum, then back to gentle running &#8211; Although I may be tempted to try earlier that this &#8211; If there is no pain after a week, I&#8217;ll try some skipping, then move onto a short (1-2 miles) run.</p>
<p>There is still a small possibility that I can get Marathon fit by 25th September &#8211; Its going to take some intense training, to the point of having to sacrifice even more time normally spent doing other stuff.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/naturalprogression.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/naturalprogression.wordpress.com/353/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/naturalprogression.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/naturalprogression.wordpress.com/353/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/naturalprogression.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/naturalprogression.wordpress.com/353/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/naturalprogression.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/naturalprogression.wordpress.com/353/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/naturalprogression.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/naturalprogression.wordpress.com/353/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/naturalprogression.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/naturalprogression.wordpress.com/353/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/naturalprogression.wordpress.com/353/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/naturalprogression.wordpress.com/353/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=naturalprogression.wordpress.com&amp;blog=5485195&amp;post=353&amp;subd=naturalprogression&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://naturalprogression.wordpress.com/2011/07/25/new-forest-marathon-vs-ibuprofen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/94137fa2aec7a48b31e37dd07b452628?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">naturalprogression</media:title>
		</media:content>
	</item>
		<item>
		<title>Samsung Galaxy S2 &#8211; ADB Device Driver</title>
		<link>http://naturalprogression.wordpress.com/2011/07/19/samsung-galaxy-s2-adb-device-driver/</link>
		<comments>http://naturalprogression.wordpress.com/2011/07/19/samsung-galaxy-s2-adb-device-driver/#comments</comments>
		<pubDate>Tue, 19 Jul 2011 21:56:57 +0000</pubDate>
		<dc:creator>naturalprogression</dc:creator>
				<category><![CDATA[Android Development]]></category>

		<guid isPermaLink="false">http://naturalprogression.wordpress.com/?p=348</guid>
		<description><![CDATA[I&#8217;ve just found a solution to a problem that I&#8217;ve spent the best part of three evenings working on &#8211; Getng the ADB (Android Debug Bridge) working for my shiny new Samsung Galaxy S2 (i9100). Heres what I to finally get this working: Disconnected my phone from USB Using USBDeview, I deinstalled all previously installed [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=naturalprogression.wordpress.com&amp;blog=5485195&amp;post=348&amp;subd=naturalprogression&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just found a solution to a problem that I&#8217;ve spent the best part of three evenings working on &#8211; Getng the ADB (Android Debug Bridge) working for my shiny new Samsung Galaxy S2 (i9100).</p>
<p>Heres what I to finally get this working:</p>
<ol>
<li>Disconnected my phone from USB</li>
<li>Using <a href="http://download.cnet.com/USBDeview/3000-2094_4-10614190.html">USBDeview</a>, I deinstalled all previously installed drivers relating to the phone (Careful here!)</li>
<li>Installed <a href="http://www.samsung.com/uk/kies/">Samsung Kies</a>, and loaded it</li>
<li>From Samsung Kies, I selected Tools &gt; Install Driver (This step took a while, and it seemed like it had stalled &#8211; Be patient!)</li>
<li>Connected my phone to USB</li>
<li>The devices installed &#8211; Windows then gave me an error regarding missing drivers, however, when I checked device manager, I could see &#8216;Samsung Android Phone&#8217; under which was &#8216;Samsung Android ADB Device&#8217;</li>
<li>I then ran &#8216;adb.exe devices&#8217; (From a command prompt &#8211; adb.exe lives in the android-sdk folder) &#8211; This listed my device! Hoorah!
<a href='http://naturalprogression.wordpress.com/2011/07/19/samsung-galaxy-s2-adb-device-driver/dev-man/' title='dev-man'><img data-attachment-id='349' data-orig-size='267,73' data-liked='0'width="150" height="41" src="http://naturalprogression.files.wordpress.com/2011/07/dev-man.jpg?w=150&#038;h=41" class="attachment-thumbnail" alt="dev-man" title="dev-man" /></a>
<a href='http://naturalprogression.wordpress.com/2011/07/19/samsung-galaxy-s2-adb-device-driver/adb/' title='adb'><img data-attachment-id='350' data-orig-size='439,75' data-liked='0'width="150" height="25" src="http://naturalprogression.files.wordpress.com/2011/07/adb.jpg?w=150&#038;h=25" class="attachment-thumbnail" alt="adb" title="adb" /></a>
</li>
</ol>
<p><strong>Whats this all about then?</strong><br />
Well, in the main, its about Android app development. Whilst it is possible to develop apps using an emulator, you can also develop and debug using a hardware device (i.e. a Real phone). In order to do this, ADB (Android Debug Bridge) needs to be able to see the device. It seems alot of people have problems getting this working, so hopefully this will be helpful. If so, please drop me a comment!<strong><br />
</strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/naturalprogression.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/naturalprogression.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/naturalprogression.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/naturalprogression.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/naturalprogression.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/naturalprogression.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/naturalprogression.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/naturalprogression.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/naturalprogression.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/naturalprogression.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/naturalprogression.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/naturalprogression.wordpress.com/348/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/naturalprogression.wordpress.com/348/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/naturalprogression.wordpress.com/348/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=naturalprogression.wordpress.com&amp;blog=5485195&amp;post=348&amp;subd=naturalprogression&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://naturalprogression.wordpress.com/2011/07/19/samsung-galaxy-s2-adb-device-driver/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/94137fa2aec7a48b31e37dd07b452628?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">naturalprogression</media:title>
		</media:content>

		<media:content url="http://naturalprogression.files.wordpress.com/2011/07/dev-man.jpg?w=150" medium="image">
			<media:title type="html">dev-man</media:title>
		</media:content>

		<media:content url="http://naturalprogression.files.wordpress.com/2011/07/adb.jpg?w=150" medium="image">
			<media:title type="html">adb</media:title>
		</media:content>
	</item>
		<item>
		<title>Idiots Guide to&#8230;.Web Application Security</title>
		<link>http://naturalprogression.wordpress.com/2011/06/15/idiots-guide-to-web-application-security/</link>
		<comments>http://naturalprogression.wordpress.com/2011/06/15/idiots-guide-to-web-application-security/#comments</comments>
		<pubDate>Wed, 15 Jun 2011 18:41:07 +0000</pubDate>
		<dc:creator>naturalprogression</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://naturalprogression.wordpress.com/?p=125</guid>
		<description><![CDATA[Below is my recommended list of web application security must-haves. Whilst I wouldnt call myself a security expert, I do have over 10 years IT experience, much of which has been spent in development. These are all fundamentals, but often missed &#8211; Either due to lack of knowledge or time &#8211; Yes, security does often [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=naturalprogression.wordpress.com&amp;blog=5485195&amp;post=125&amp;subd=naturalprogression&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div><span style="color:#000000;">Below is my recommended list of web application security must-haves. Whilst I wouldnt call myself a security expert, I do have over 10 years IT experience, much of which has been spent in development. These are all fundamentals, but often missed &#8211; Either due to lack of knowledge or time &#8211; Yes, security does often take a hit over functionality when a project is running late (Unfortunately)!</span></div>
<ul>
<li><span style="color:#000000;"><strong>Don&#8217;t rely on client side validation<br />
</strong></span><span style="color:#000000;"><span style="color:#000000;">Ok, so you use client side scripting (Probably javascript) to ensure your users can&#8217;t send you a SQL injection attack and shut down your SQL box. Great! Are you sure there browser supports javascript? Yep? Sure they haven&#8217;t switched scripting off? Sure they are not accessing your site via a proxy that lets them change post/get data on-the-fly?</p>
<p></span></span></li>
<li><span style="color:#000000;"><strong>This script does just what I need&#8230;.Great!<br />
</strong></span><span style="color:#000000;"><span style="color:#000000;"><strong></strong>Alright, so your projects running late, you have some tough code to write. As luck would have it your also low on Red-Bull/Coffee/Jelly Babies. You find some code that suits the job perfectly! Whats next&#8230;Download, modify to suit, test a little&#8230; Job done! Only problem is, any security flaws that were in that script are now sat in your application, waiting to be exploited. Worse still is the scenario when you use a well known script which has flaws &#8211; You then have an application where anyone who knows about Google can find out how to hack your site.</p>
<p></span></span></li>
<li><span style="color:#000000;"><strong>Just more stuff to go wrong&#8230;<br />
</strong></span><span style="color:#000000;"><span style="color:#000000;"><strong></strong>Generally speaking, things that are simple work better and for longer. Do you really need all them extra features and roles on your web server? Are you using Perl? Webdav? FTP? SMTP? Perhaps you installed them out of the box &#8211; Surely its easier to install and configure now, whilst your on the server build project? Perhaps not &#8211; The more you have installed, the higher the chances are that your server will have a vulneralbility of some kind, making your server a more attractive play-ground to hackers. Indeed the approach by Microsoft since Windows server 2003 is to have a minimal server foot print. This is approach in general with the O/S on Windows 2008. This method has the positive side effect of reducing processing, which means less power usage &#8211; So you can save the planet too!</span></span>The same applies for the code you write &#8211; The more functionality a system has, the more likely it is to have bugs, which of course increases the risk of security flaws. As a general rule, if the Business doesn&#8217;t need the functionality, don&#8217;t add it. The responsibility for keeping an application lean in this sense comes down to the designer/architect, customer and developer &#8211; All of these project roles have scope for adding/introducing functionality that is not needed/wanted.</li>
<li><span style="color:#000000;"><strong>Don&#8217;t put up a welcome sign<br />
</strong></span><span style="color:#000000;"><span style="color:#000000;"><strong></strong>Easy one &#8211; If you have an admin interface on a website, dont make it obvious where it is! Can you host it on another site? Do you really have to store it at /admin? Is it password protected? (If not, forget reading this page&#8230;.give up, go home!). Is it reachable and/or indexible by search engines? (Lets hope not). What username/password did you decide upon? Users are aweful at remembering account details, but this is no excuse for weak credentials (Although in my experience, a decent username/password combo often encourages users to write the details down&#8230;sometimes in the most unbelievable places!)</p>
<p></span></span></li>
<li><span style="color:#000000;"><span style="font-weight:bold;">If you need to hide it, hide it well!<br />
</span></span><span style="color:#000000;"><span style="color:#000000;">Many web developers have made the mistake of using hidden form variables to &#8216;hide&#8217; data from the user, these can easily be modified in transit, using a proxy software, or using an even simpler method &#8211; Downloading the HTML, changing the hidden form field values and submitting the form data from the local machine to the script on the remote web server. The same goes for querystring variables, which are potentially even more of a problem &#8211; They are immediately visible to the user (in the browser address bar), so even a casual browser, let alone a hacker may try to change these, perhaps just for fun, maybe for personal gain or perhaps just to wreck your web app!The results of course depend on the criticality of the application &#8211; Imagine an online banking application that relied on hidden form fields or querystring variables to carry transaction amounts around! Ok, that&#8217;s an extreme example, but you get the point!? I have actually seen a live e-commerce site using hidden form variables to carry the product prices&#8230;a quick experiment proved that changing these resulted in a very heavily discounted shopping cart! (No, I didn&#8217;t actually check out &#8211; I emailed the site owner informing them of the issue).</p>
<p></span></span></li>
<li><span style="color:#000000;"><span style="font-weight:bold;">Broken Biscuits<br />
</span></span><span style="color:#000000;">Cookies can be broken apart, changed and put back together again. Its also possible (and easy) to view the ingredients. So &#8211; Dont use cookies to store any critical information! By critical, I mean anything that will change, or has the potential to change the functionality of your application &#8211; Consider the way your site works, what the user is offered and howits secured &#8211; e.g. Store the users account name in a cookie, OK, they wont have to enter it every time but &#8211; You have just given away one half of the users credentials to anyone who uses their computer.<br />
</span></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/naturalprogression.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/naturalprogression.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/naturalprogression.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/naturalprogression.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/naturalprogression.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/naturalprogression.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/naturalprogression.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/naturalprogression.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/naturalprogression.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/naturalprogression.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/naturalprogression.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/naturalprogression.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/naturalprogression.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/naturalprogression.wordpress.com/125/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=naturalprogression.wordpress.com&amp;blog=5485195&amp;post=125&amp;subd=naturalprogression&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://naturalprogression.wordpress.com/2011/06/15/idiots-guide-to-web-application-security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/94137fa2aec7a48b31e37dd07b452628?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">naturalprogression</media:title>
		</media:content>
	</item>
	</channel>
</rss>
