<?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/"
	>

<channel>
	<title>Chris Paul</title>
	<atom:link href="http://www.chrispaul.ws/feed" rel="self" type="application/rss+xml" />
	<link>http://www.chrispaul.ws</link>
	<description>web dev / seo / aspiring entrepreneur</description>
	<lastBuildDate>Mon, 15 Mar 2010 05:43:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Best social media advice ever</title>
		<link>http://www.chrispaul.ws/2010/03/best-social-media-advice-ever</link>
		<comments>http://www.chrispaul.ws/2010/03/best-social-media-advice-ever#comments</comments>
		<pubDate>Thu, 04 Mar 2010 14:43:16 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[Opinion]]></category>

		<guid isPermaLink="false">http://www.chrispaul.ws/?p=643</guid>
		<description><![CDATA[http://www.inc.com/magazine/20100301/lets-take-this-offline.html is generally about blogging. But take a look at this quote:
&#8220;&#8230;99 percent of these bloggers are doing it wrong. The problem? They make the blog about themselves, filling it with posts announcing new hires, touting new products, and sharing pictures from the company picnic. That&#8217;s lovely, darling &#8212; I&#8217;m sure your mom cares. Too [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.inc.com/magazine/20100301/lets-take-this-offline.html">http://www.inc.com/magazine/20100301/lets-take-this-offline.html</a> is generally about blogging. But take a look at this quote:</p>
<p><em>&#8220;&#8230;99 percent of these bloggers are doing it wrong. The problem? They make the blog about themselves, filling it with posts announcing new hires, touting new products, and sharing pictures from the company picnic. That&#8217;s lovely, darling &#8212; I&#8217;m sure your mom cares. Too bad nobody else does.&#8221;</em></p>
<p>So what to blog about then?</p>
<p><em>&#8220;&#8230;an entrepreneur&#8217;s blog has to be about something bigger than his or her company and his or her product.&#8221;</em></p>
<p>For example?&#8230;</p>
<p><em>&#8220;&#8230;if you&#8217;re selling a clever attachment to a camera that diffuses harsh flash light, don&#8217;t talk about the technical features or about your holiday sale (10 percent off!). Make a list of 10 tips for being a better photographer.&#8221;</em></p>
<p>or</p>
<p><em>&#8220;If you&#8217;re opening a restaurant, don&#8217;t blog about your menu. Blog about great food. You&#8217;ll attract foodies who don&#8217;t care about your restaurant yet.&#8221;</em></p>
<p>This advice, I believe, applies to many mediums&mdash;youtube, facebook, twitter. Stop talking about yourself. Start sharing good ideas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chrispaul.ws/2010/03/best-social-media-advice-ever/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upsert in Windows Sql Server 2008</title>
		<link>http://www.chrispaul.ws/2010/03/upsert-in-windows-sql-server-2008</link>
		<comments>http://www.chrispaul.ws/2010/03/upsert-in-windows-sql-server-2008#comments</comments>
		<pubDate>Wed, 03 Mar 2010 17:50:40 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.chrispaul.ws/?p=641</guid>
		<description><![CDATA[Upserting means that you want to update the record if it exists or insert a new one if it doesn&#8217;t.
I found a secure solution for this at http://stackoverflow.com/questions/108403/solutions-for-insert-or-update-on-sql-server

begin tran
IF EXISTS &#40;SELECT * FROM TABLE WITH &#40;updlock,serializable&#41; WHERE KEY = @KEY&#41;
begin
   UPDATE TABLE SET ...
   WHERE KEY = @KEY
end
else
begin
   INSERT [...]]]></description>
			<content:encoded><![CDATA[<p>Upserting means that you want to update the record if it exists or insert a new one if it doesn&#8217;t.</p>
<p>I found a secure solution for this at <a href="http://stackoverflow.com/questions/108403/solutions-for-insert-or-update-on-sql-server">http://stackoverflow.com/questions/108403/solutions-for-insert-or-update-on-sql-server</a></p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;">begin tran
<span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">WITH</span> <span style="color: #66cc66;">&#40;</span>updlock<span style="color: #66cc66;">,</span>serializable<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #993333; font-weight: bold;">KEY</span> <span style="color: #66cc66;">=</span> @<span style="color: #993333; font-weight: bold;">KEY</span><span style="color: #66cc66;">&#41;</span>
begin
   <span style="color: #993333; font-weight: bold;">UPDATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">SET</span> <span style="color: #66cc66;">...</span>
   <span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #993333; font-weight: bold;">KEY</span> <span style="color: #66cc66;">=</span> @<span style="color: #993333; font-weight: bold;">KEY</span>
end
else
begin
   <span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">KEY</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">...</span><span style="color: #66cc66;">&#41;</span>
   <span style="color: #993333; font-weight: bold;">VALUES</span> <span style="color: #66cc66;">&#40;</span>@<span style="color: #993333; font-weight: bold;">KEY</span><span style="color: #66cc66;">,</span> <span style="color: #66cc66;">...</span><span style="color: #66cc66;">&#41;</span>
end
commit tran</pre></div></div>

<p>I tried it and it works pretty well. You&#8217;ll need to learn how to create a stored procedure, if you don&#8217;t know how already.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chrispaul.ws/2010/03/upsert-in-windows-sql-server-2008/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Selling my laptop&#8230; Mac vs. PC</title>
		<link>http://www.chrispaul.ws/2010/02/selling-my-laptop-mac-vs-pc</link>
		<comments>http://www.chrispaul.ws/2010/02/selling-my-laptop-mac-vs-pc#comments</comments>
		<pubDate>Thu, 25 Feb 2010 22:05:26 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Opinion]]></category>

		<guid isPermaLink="false">http://www.chrispaul.ws/?p=635</guid>
		<description><![CDATA[I decided to sell my 2007 Macbook Pro. Now I&#8217;m trying to decide what I want to get to replace it. I&#8217;ve been hearing that Apple will be releasing new Macbook Pros with the i7 chips, which would be really cool. We&#8217;ll see how much they are.
Right now, I can get a PC laptop for [...]]]></description>
			<content:encoded><![CDATA[<p>I decided to sell my 2007 Macbook Pro. Now I&#8217;m trying to decide what I want to get to replace it. I&#8217;ve been hearing that Apple will be releasing new Macbook Pros with the i7 chips, which would be really cool. We&#8217;ll see how much they are.</p>
<p>Right now, I can get a PC laptop for $1500 with these specs:<br />
15.6&#8243; HD+ (1600&#215;900) LED Backlit LCD w/ATI Mobility Radeon™ HD 4570 w/512MB GDDR2<br />
i7-720QM (1.6~2.8GHz, 45W) w/6M L3 Cache<br />
8GB (2 SODIMMS) DDR3/1066 Dual Channel Memory<br />
500GB SATA II 3GB/s 7,200RPM Hard Drive<br />
2x Blu-Ray Reader/8x Super Multi Combo Drive</p>
<p>These are some good specs. I have a history of going back and forth between a Mac and a PC. My first computer was a Mac mini then a custom built PC with XP (blech) and now a Macbook Pro. The blu ray is very very tempting. The price point is very affordable. I think I might try a PC this time but with Windows 2008 R2 as the OS (already have a copy). Plus, I&#8217;m just sick of how OS X deals with flash. Maybe I&#8217;ll come back to Mac after they deal with that (and get blu ray).</p>
<p>Geekbench scores for my current Macbook Pro:<br />
<a href="http://browse.geekbench.ca/geekbench2/view/222773">2959 under OS X</a><br />
<a href="http://browse.geekbench.ca/geekbench2/view/222777">2393 under Windows 2008 standard</a></p>
<p>Geekbench score for my new laptop (coming soon):<br />
<a href="http://browse.geekbench.ca/geekbench2/view/228605">4162</a></p>
<p>I decided to buy the Samsung R580.<br />
Intel i5 2.26 Ghz<br />
4 GB Ram<br />
nvidia Geforce GT 310 w/512MB memory<br />
DVD RW/Blu-ray<br />
500 GB 5400 rpm hard drive.<br />
$830 retail.</p>
<p>I sold my Macbook Pro for $1100. I spent about $100 on shipping and ebay/paypal fees. The new laptop came to a total of around $880 with tax. Pretty good deal. There are some things I miss about the Mac. Apple has user experience down. I really like the Macbook&#8217;s keyboard and trackpad much better. However, I&#8217;m not sure if I would like the new Macbook&#8217;s trackpad where the entire trackpagd is a button. Well this is an experiment. We&#8217;ll see if I can get used to the Samsung. I really really like the blu-ray. Displaying the video on a HDTV is really awesome and works great. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.chrispaul.ws/2010/02/selling-my-laptop-mac-vs-pc/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cross platform, open source .NET development framework</title>
		<link>http://www.chrispaul.ws/2010/02/cross-platform-open-source-net-development-framework</link>
		<comments>http://www.chrispaul.ws/2010/02/cross-platform-open-source-net-development-framework#comments</comments>
		<pubDate>Wed, 24 Feb 2010 16:23:50 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Links]]></category>

		<guid isPermaLink="false">http://www.chrispaul.ws/?p=633</guid>
		<description><![CDATA[http://mono-project.com
Don&#8217;t know much about it but it looks freakin awesome.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://mono-project.com">http://mono-project.com</a></p>
<p>Don&#8217;t know much about it but it looks freakin awesome.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chrispaul.ws/2010/02/cross-platform-open-source-net-development-framework/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Use your keyboard to navigate pagination</title>
		<link>http://www.chrispaul.ws/2010/02/use-your-keyboard-to-navigate-pagination</link>
		<comments>http://www.chrispaul.ws/2010/02/use-your-keyboard-to-navigate-pagination#comments</comments>
		<pubDate>Mon, 22 Feb 2010 16:08:44 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.chrispaul.ws/?p=626</guid>
		<description><![CDATA[This is in C# asp.net, but can easily be converted to other languages.
I assume on your paginated page that you have some sort of &#8220;page&#8221; variable and &#8220;page count&#8221; variable. Write those variables out in Javascript:

extraJs.Text += &#34;&#60;script type=\&#34;text/javascript\&#34;&#62;var page = &#34; + pageIndex + &#34;;\n&#34;;
extraJs.Text += &#34;var pageCount = &#34; + pageCount + &#34;;&#60;/script&#62;&#34;;

Next, [...]]]></description>
			<content:encoded><![CDATA[<p>This is in C# asp.net, but can easily be converted to other languages.</p>
<p>I assume on your paginated page that you have some sort of &#8220;page&#8221; variable and &#8220;page count&#8221; variable. Write those variables out in Javascript:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">extraJs.<span style="color: #0000FF;">Text</span> <span style="color: #008000;">+=</span> <span style="color: #666666;">&quot;&lt;script type=<span style="color: #008080; font-weight: bold;">\&quot;</span>text/javascript<span style="color: #008080; font-weight: bold;">\&quot;</span>&gt;var page = &quot;</span> <span style="color: #008000;">+</span> pageIndex <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;;<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">;</span>
extraJs.<span style="color: #0000FF;">Text</span> <span style="color: #008000;">+=</span> <span style="color: #666666;">&quot;var pageCount = &quot;</span> <span style="color: #008000;">+</span> pageCount <span style="color: #008000;">+</span> <span style="color: #666666;">&quot;;&lt;/script&gt;&quot;</span><span style="color: #008000;">;</span></pre></div></div>

<p>Next, let&#8217;s use jQuery to capture the left and right arrow keys:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">extraJs.<span style="color: #0000FF;">Text</span> <span style="color: #008000;">+=</span> <span style="color: #666666;">&quot;&lt;script type=<span style="color: #008080; font-weight: bold;">\&quot;</span>text/javascript<span style="color: #008080; font-weight: bold;">\&quot;</span>&gt;<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">+</span>
	<span style="color: #666666;">&quot;$(document).ready(function(){<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span> <span style="color: #008000;">+</span>
	<span style="color: #666666;">&quot;    $(document).keyup(function(event){<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span> <span style="color: #008000;">+</span>
	<span style="color: #666666;">&quot;        switch(event.which){<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span> <span style="color: #008000;">+</span>
	<span style="color: #666666;">&quot;            case 39:<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span> <span style="color: #008000;">+</span>
	<span style="color: #666666;">&quot;                if(pageCount &gt; 1 &amp;&amp; page != pageCount){<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span> <span style="color: #008000;">+</span>
	<span style="color: #666666;">&quot;                    var next = page + 1;<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span> <span style="color: #008000;">+</span>
	<span style="color: #666666;">&quot;                    window.location = 'search.html?page=' + next;<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span> <span style="color: #008000;">+</span>
	<span style="color: #666666;">&quot;                }<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span> <span style="color: #008000;">+</span>
	<span style="color: #666666;">&quot;                break;<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span> <span style="color: #008000;">+</span>
	<span style="color: #666666;">&quot;            case 37:<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span> <span style="color: #008000;">+</span>
	<span style="color: #666666;">&quot;                if(page &gt; 1){<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span> <span style="color: #008000;">+</span>
	<span style="color: #666666;">&quot;                    var prev = page - 1;<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span> <span style="color: #008000;">+</span>
	<span style="color: #666666;">&quot;                    window.location = '/search.html?page=' + prev;<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span> <span style="color: #008000;">+</span>
	<span style="color: #666666;">&quot;                }<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span> <span style="color: #008000;">+</span>
	<span style="color: #666666;">&quot;                break;<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span> <span style="color: #008000;">+</span>
	<span style="color: #666666;">&quot;            default:<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span> <span style="color: #008000;">+</span>
	<span style="color: #666666;">&quot;                break;<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span> <span style="color: #008000;">+</span>
	<span style="color: #666666;">&quot;         }<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span> <span style="color: #008000;">+</span>
	<span style="color: #666666;">&quot;    });<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span> <span style="color: #008000;">+</span>
	<span style="color: #666666;">&quot;});<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span> <span style="color: #008000;">+</span>
	<span style="color: #666666;">&quot;&lt;/script&gt;<span style="color: #008080; font-weight: bold;">\n</span>&quot;</span><span style="color: #008000;">;</span></pre></div></div>

<p>The previous code is in the C# codebehind file. In your frontend aspx file, I used an asp literal like so:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;asp:Literal</span> <span style="color: #000066;">ID</span>=<span style="color: #ff0000;">&quot;extraJs&quot;</span> <span style="color: #000066;">runat</span>=<span style="color: #ff0000;">&quot;server&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/asp:Literal<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p><a href="http://www.dixieredstorm.com/search.html">http://www.dixieredstorm.com/search.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chrispaul.ws/2010/02/use-your-keyboard-to-navigate-pagination/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I.T. = Waste of Money</title>
		<link>http://www.chrispaul.ws/2010/02/i-t-waste-of-money</link>
		<comments>http://www.chrispaul.ws/2010/02/i-t-waste-of-money#comments</comments>
		<pubDate>Mon, 22 Feb 2010 06:46:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Opinion]]></category>

		<guid isPermaLink="false">http://www.chrispaul.ws/?p=624</guid>
		<description><![CDATA[I have been a personal witness to a serious waste of time and money on trying to fix/upgrade/manage an email server. It&#8217;s ridiculous. This should have been outsourced. Take a look at DNAmail. For $3 a month, you can get complete email hosting. 
In addition to trying to fix/upgrade/manage an email server, I have seen [...]]]></description>
			<content:encoded><![CDATA[<p>I have been a personal witness to a serious waste of time and money on trying to fix/upgrade/manage an email server. It&#8217;s ridiculous. This should have been outsourced. Take a look at DNAmail. For $3 a month, you can get complete email hosting. </p>
<p>In addition to trying to fix/upgrade/manage an email server, I have seen time wasted in trying to fix office computers. If it&#8217;s going to take the Programmer/IT guy more than 4 hours to fix a computer, you might as well just take it to a computer repair shop. Go ahead and order the parts yourself off newegg, but let somebody else fix it. You&#8217;ll probably spend the same amount of money, but your programmer/IT guy will use his time on more productive things, like product development.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chrispaul.ws/2010/02/i-t-waste-of-money/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP vs C# asp.net</title>
		<link>http://www.chrispaul.ws/2010/02/php-vs-c-asp-net</link>
		<comments>http://www.chrispaul.ws/2010/02/php-vs-c-asp-net#comments</comments>
		<pubDate>Wed, 17 Feb 2010 00:02:00 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Links]]></category>

		<guid isPermaLink="false">http://www.chrispaul.ws/?p=620</guid>
		<description><![CDATA[According to Facebook, PHP is 10 times slower than C# or Java. Makes sense. Compiled languages should run faster than interpreted languages.
There are PHP web servers which then aggregate data from dedicated web services, in-memory caches and their relational database. They use PHP on the front-end because it is easy to learn, easy to develop [...]]]></description>
			<content:encoded><![CDATA[<p>According to Facebook, PHP is 10 times slower than C# or Java. Makes sense. Compiled languages should run faster than interpreted languages.</p>
<p><em>There are PHP web servers which then aggregate data from dedicated web services, in-memory caches and their relational database. They use PHP on the front-end because it is easy to learn, easy to develop in and it is very productive. However there are downsides such as the fact that their benchmarks have shown that it is ten times slower than if they used more traditional web programming technologies like C# or Java. They have done a lot of work to optimize PHP and will continue to invest in optimizations instead of switching the language they use on their front ends. </em></p>
<p>from: <a href="http://www.25hoursaday.com/weblog/2009/10/29/FacebookSeattleEngineeringRoadShowMikeShroepferOnEngineeringAtScaleAtFacebook.aspx">http://www.25hoursaday.com/weblog/2009/10/29/FacebookSeattleEngineeringRoadShowMikeShroepferOnEngineeringAtScaleAtFacebook.aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chrispaul.ws/2010/02/php-vs-c-asp-net/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Password security</title>
		<link>http://www.chrispaul.ws/2010/02/password-security</link>
		<comments>http://www.chrispaul.ws/2010/02/password-security#comments</comments>
		<pubDate>Sun, 14 Feb 2010 21:21:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Opinion]]></category>

		<guid isPermaLink="false">http://www.chrispaul.ws/?p=613</guid>
		<description><![CDATA[I recently read about the Rockyou hack (http://techcrunch.com/2009/12/14/rockyou-hack-security-myspace-facebook-passwords/). I have a couple thoughts.
1. Protect against SQL injection is obvious. They should have done that.
2. Hashing and salting passwords is another obvious thing to do. They should have done that.
3. BUT, why do websites ask for a password on signup anyway? I recently developed this process [...]]]></description>
			<content:encoded><![CDATA[<p>I recently read about the Rockyou hack (<a href="http://techcrunch.com/2009/12/14/rockyou-hack-security-myspace-facebook-passwords/">http://techcrunch.com/2009/12/14/rockyou-hack-security-myspace-facebook-passwords/</a>). I have a couple thoughts.</p>
<p>1. Protect against SQL injection is obvious. They should have done that.<br />
2. Hashing and salting passwords is another obvious thing to do. They should have done that.<br />
3. BUT, why do websites ask for a password on signup anyway? I recently developed this process for a couple sites of mine:</p>
<ul>
<li>Firstly, don&#8217;t ask for a password on signup. Generate one for the user and email them the password and an activation link.</li>
<li>Tell the user to copy the password into their clipboard and click the link.</li>
<li>The link will &#8220;activate&#8221; the user and redirect them to the login screen where they manually enter their email address and paste in the temp password.</li>
<li>Because it&#8217;s their first time logging in, ask them to update their password once they login. Also, when copying from an email, the browser sometimes puts an extra space at the end. I just strip out any spaces that are in the password.</li>
<li>Also, I personally like double-clicking on the password in the email to select it. But to do this, I think the password generally has to be alphanumeric. I think usually when there is a special character in the middle, the browser &#8220;divides&#8221; the word in half. </li>
</ul>
<p>I think this would give the user more confidence that you are handling passwords securely. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.chrispaul.ws/2010/02/password-security/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# engine Regex tool</title>
		<link>http://www.chrispaul.ws/2010/02/c-engine-regex-tool</link>
		<comments>http://www.chrispaul.ws/2010/02/c-engine-regex-tool#comments</comments>
		<pubDate>Sun, 14 Feb 2010 21:08:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Links]]></category>

		<guid isPermaLink="false">http://www.chrispaul.ws/?p=611</guid>
		<description><![CDATA[Pretty cool.
http://www.mycsharp.de/wbb2/thread.php?postid=224752#post224752
]]></description>
			<content:encoded><![CDATA[<p>Pretty cool.</p>
<p><a href="http://www.mycsharp.de/wbb2/thread.php?postid=224752#post224752">http://www.mycsharp.de/wbb2/thread.php?postid=224752#post224752</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chrispaul.ws/2010/02/c-engine-regex-tool/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I am determined</title>
		<link>http://www.chrispaul.ws/2010/02/i-am-determined</link>
		<comments>http://www.chrispaul.ws/2010/02/i-am-determined#comments</comments>
		<pubDate>Thu, 11 Feb 2010 22:30:01 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Opinion]]></category>

		<guid isPermaLink="false">http://www.chrispaul.ws/?p=608</guid>
		<description><![CDATA[So I have been working on RebelStudent.com for about a year now and I am going to do everything that I can to make it successful. I believe in the product. It is my baby. I have written 95% of the code on that site from scratch. I have identified weaknesses in my competitors and [...]]]></description>
			<content:encoded><![CDATA[<p>So I have been working on RebelStudent.com for about a year now and I am going to do everything that I can to make it successful. I believe in the product. It is my baby. I have written 95% of the code on that site from scratch. I have identified weaknesses in my competitors and I resolve issues that they don&#8217;t even come close to.</p>
<p>I will crush it GaryV style. I have no overhead. My web server is a dual quad-core, 8 GB ram, co-located machine. I get to use it free. </p>
<p>So many people just shrug me off. I have had zero help on this project. Nobody believed in it except for me and family. I am so thankful for my wife&#8217;s support. However, Rebelstudent.com is near completion and it will rock this world. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.chrispaul.ws/2010/02/i-am-determined/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
