<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Announcement Listory</title>
	<atom:link href="http://blog.dreamhost.com/2005/08/30/announcement-listory/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.dreamhost.com/2005/08/30/announcement-listory/</link>
	<description>Tales From the Inside!</description>
	<lastBuildDate>Sun, 22 Nov 2009 23:18:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: David Strauss</title>
		<link>http://blog.dreamhost.com/2005/08/30/announcement-listory/comment-page-1/#comment-973</link>
		<dc:creator>David Strauss</dc:creator>
		<pubDate>Thu, 15 Sep 2005 19:03:33 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dreamhost.com/?p=21#comment-973</guid>
		<description>You guys need to fundamentally change the way your primary key and authentication mechanism work, not just improve the random number generator. You should be using a simple incrementing counter as the primary key. The &quot;goop&quot; code should should be the primary key (or email) HMACed against a key you have somewhere on your server. Whenever someone clicks the link, your server HMACs the primary key against your private key and checks it against the link&#039;s submission. A good hash makes it near impossible for someone to figure out your key and generate the codes themselves.

Another way to fix your system is using a normal incrementing primary key and a random number in a separate field. When someone clicks the link to verify, look up the record and check if the separate random number field matches.</description>
		<content:encoded><![CDATA[<p>You guys need to fundamentally change the way your primary key and authentication mechanism work, not just improve the random number generator. You should be using a simple incrementing counter as the primary key. The &#8220;goop&#8221; code should should be the primary key (or email) HMACed against a key you have somewhere on your server. Whenever someone clicks the link, your server HMACs the primary key against your private key and checks it against the link&#8217;s submission. A good hash makes it near impossible for someone to figure out your key and generate the codes themselves.</p>
<p>Another way to fix your system is using a normal incrementing primary key and a random number in a separate field. When someone clicks the link to verify, look up the record and check if the separate random number field matches.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel</title>
		<link>http://blog.dreamhost.com/2005/08/30/announcement-listory/comment-page-1/#comment-497</link>
		<dc:creator>Daniel</dc:creator>
		<pubDate>Wed, 07 Sep 2005 20:46:14 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dreamhost.com/?p=21#comment-497</guid>
		<description>POST MORE!!!! I&#039;ve made this blog one of the websites I repeatedly check throughout the day while working (to look busy) and am disappointed everytime I don&#039;t find new posts!</description>
		<content:encoded><![CDATA[<p>POST MORE!!!! I&#8217;ve made this blog one of the websites I repeatedly check throughout the day while working (to look busy) and am disappointed everytime I don&#8217;t find new posts!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Louis</title>
		<link>http://blog.dreamhost.com/2005/08/30/announcement-listory/comment-page-1/#comment-496</link>
		<dc:creator>Louis</dc:creator>
		<pubDate>Wed, 07 Sep 2005 12:49:22 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dreamhost.com/?p=21#comment-496</guid>
		<description>So, is anybody at DreamHost secretly working on a Rails version of the control panel, like how Apple was compiling OS X for Intel for years? ;)</description>
		<content:encoded><![CDATA[<p>So, is anybody at DreamHost secretly working on a Rails version of the control panel, like how Apple was compiling OS X for Intel for years? ;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: shazow</title>
		<link>http://blog.dreamhost.com/2005/08/30/announcement-listory/comment-page-1/#comment-493</link>
		<dc:creator>shazow</dc:creator>
		<pubDate>Sun, 04 Sep 2005 16:12:51 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dreamhost.com/?p=21#comment-493</guid>
		<description>RE: Kelly
Good point, just wouldn&#039;t be nearly as fun without the goop :-)</description>
		<content:encoded><![CDATA[<p>RE: Kelly<br />
Good point, just wouldn&#8217;t be nearly as fun without the goop :-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kelly</title>
		<link>http://blog.dreamhost.com/2005/08/30/announcement-listory/comment-page-1/#comment-487</link>
		<dc:creator>Kelly</dc:creator>
		<pubDate>Fri, 02 Sep 2005 18:32:47 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dreamhost.com/?p=21#comment-487</guid>
		<description>To reply to shazow, the problem with an autoincrementing ID is then people can reasonably guess what our &quot;goop&quot; is going to be. This means they could subscribe someone to the list just by subscribing themselves and someone else in rapid succession, and just trying a bunch of sequential numbers.

We also couldn&#039;t really call it goop at that point, and where is the fun in that? ;-)</description>
		<content:encoded><![CDATA[<p>To reply to shazow, the problem with an autoincrementing ID is then people can reasonably guess what our &#8220;goop&#8221; is going to be. This means they could subscribe someone to the list just by subscribing themselves and someone else in rapid succession, and just trying a bunch of sequential numbers.</p>
<p>We also couldn&#8217;t really call it goop at that point, and where is the fun in that? ;-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ben</title>
		<link>http://blog.dreamhost.com/2005/08/30/announcement-listory/comment-page-1/#comment-483</link>
		<dc:creator>Ben</dc:creator>
		<pubDate>Fri, 02 Sep 2005 00:37:55 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dreamhost.com/?p=21#comment-483</guid>
		<description>Blech - don&#039;t do that;

As Martin pointed out, don&#039;t call srand each time through the loop.  It&#039;s not necessary and can even be bad, depending on the arguments.

More to the point, you a)  likely don&#039;t need to srand() at all -- Perl 5.004 onwards calls it implicitly the first time rand is used -- and b) if you call srand() without arguments, it&#039;s going to do the right thing anyway:

&quot;...the generally acceptable default, which is based on time of day, process ID, and memory allocation, or the /dev/urandom device, if available.&quot;

&#039;perldoc -f srand&#039; is your friend.</description>
		<content:encoded><![CDATA[<p>Blech &#8211; don&#8217;t do that;</p>
<p>As Martin pointed out, don&#8217;t call srand each time through the loop.  It&#8217;s not necessary and can even be bad, depending on the arguments.</p>
<p>More to the point, you a)  likely don&#8217;t need to srand() at all &#8212; Perl 5.004 onwards calls it implicitly the first time rand is used &#8212; and b) if you call srand() without arguments, it&#8217;s going to do the right thing anyway:</p>
<p>&#8220;&#8230;the generally acceptable default, which is based on time of day, process ID, and memory allocation, or the /dev/urandom device, if available.&#8221;</p>
<p>&#8216;perldoc -f srand&#8217; is your friend.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: riki</title>
		<link>http://blog.dreamhost.com/2005/08/30/announcement-listory/comment-page-1/#comment-481</link>
		<dc:creator>riki</dc:creator>
		<pubDate>Fri, 02 Sep 2005 00:28:42 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dreamhost.com/?p=21#comment-481</guid>
		<description>One feature I&#039;d love to see on the Announcement Lists, would be the ability to give subscribers the option to specify areas of interest when they subscribe. That way we wouldn&#039;t have to use multiple Announcement lists for different areas of our company and Users would only get info that they were interested in. Which could be good for DH as well.

As my Mum use to say &quot;Pay me don&#039;t thank me!&quot; :)</description>
		<content:encoded><![CDATA[<p>One feature I&#8217;d love to see on the Announcement Lists, would be the ability to give subscribers the option to specify areas of interest when they subscribe. That way we wouldn&#8217;t have to use multiple Announcement lists for different areas of our company and Users would only get info that they were interested in. Which could be good for DH as well.</p>
<p>As my Mum use to say &#8220;Pay me don&#8217;t thank me!&#8221; :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: shazow</title>
		<link>http://blog.dreamhost.com/2005/08/30/announcement-listory/comment-page-1/#comment-471</link>
		<dc:creator>shazow</dc:creator>
		<pubDate>Wed, 31 Aug 2005 22:14:36 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dreamhost.com/?p=21#comment-471</guid>
		<description>Just thought I&#039;d point out a couple of things:
&lt;blockquote&gt;
Then, strangely we started getting reports the panel was timing out AGAIN! Why, God, why?! Well, it turned out even INSERTing thousands of emails into the database was too slow for the panel
[...]
So, to fix it this time, we created a temporary table that would just immediately store the whole list of addresses in just one INSERT.
&lt;/blockquote&gt;

Most databases support &quot;&lt;a href=&quot;http://dev.mysql.com/doc/mysql/en/insert-delayed.html&quot; rel=&quot;nofollow&quot;&gt;INSERT DELAYED&lt;/a&gt;&quot; for this very reason. What this does is it sends the query to the database, and instantly returns to the client without waiting for the database to finish processing the query.

Also, instead of using randomly-generated &quot;goop&quot;, would an auto-incrementing integer id not suffice?

:)

- shazow</description>
		<content:encoded><![CDATA[<p>Just thought I&#8217;d point out a couple of things:</p>
<blockquote><p>
Then, strangely we started getting reports the panel was timing out AGAIN! Why, God, why?! Well, it turned out even INSERTing thousands of emails into the database was too slow for the panel<br />
[...]<br />
So, to fix it this time, we created a temporary table that would just immediately store the whole list of addresses in just one INSERT.
</p></blockquote>
<p>Most databases support &#8220;<a href="http://dev.mysql.com/doc/mysql/en/insert-delayed.html" rel="nofollow">INSERT DELAYED</a>&#8221; for this very reason. What this does is it sends the query to the database, and instantly returns to the client without waiting for the database to finish processing the query.</p>
<p>Also, instead of using randomly-generated &#8220;goop&#8221;, would an auto-incrementing integer id not suffice?</p>
<p>:)</p>
<p>- shazow</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian</title>
		<link>http://blog.dreamhost.com/2005/08/30/announcement-listory/comment-page-1/#comment-466</link>
		<dc:creator>Brian</dc:creator>
		<pubDate>Wed, 31 Aug 2005 03:13:10 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dreamhost.com/?p=21#comment-466</guid>
		<description>a) thanks for fixing it
b) thanks for describing the problem in verbose detail.</description>
		<content:encoded><![CDATA[<p>a) thanks for fixing it<br />
b) thanks for describing the problem in verbose detail.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris</title>
		<link>http://blog.dreamhost.com/2005/08/30/announcement-listory/comment-page-1/#comment-463</link>
		<dc:creator>Chris</dc:creator>
		<pubDate>Tue, 30 Aug 2005 22:28:21 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dreamhost.com/?p=21#comment-463</guid>
		<description>See, this is why I love Dreamhost.  Like Martey said, you folk actually tell us what the hell is going on rather than treating us like mushrooms.</description>
		<content:encoded><![CDATA[<p>See, this is why I love Dreamhost.  Like Martey said, you folk actually tell us what the hell is going on rather than treating us like mushrooms.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
