<?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>Dustin Kanske&#039;s Blog &#187; Uncategorized</title>
	<atom:link href="http://www.kanske.com/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kanske.com</link>
	<description>Yay innernets!</description>
	<lastBuildDate>Mon, 14 Sep 2009 20:12:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>I Voted</title>
		<link>http://www.kanske.com/2008/11/04/i-voted/</link>
		<comments>http://www.kanske.com/2008/11/04/i-voted/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 17:32:43 +0000</pubDate>
		<dc:creator>dustin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kanske.com/?p=19</guid>
		<description><![CDATA[My co-worker Austin created a nice &#8220;I Voted&#8221; sticker using Sprout. Click &#8220;Me too&#8221; to get your copy.

]]></description>
			<content:encoded><![CDATA[<p>My co-worker Austin created a nice &#8220;I Voted&#8221; sticker using Sprout. Click &#8220;Me too&#8221; to get your copy.</p>
<p><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="playerLoader" width="300" height="165" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab"><param name="movie" value="http://farm.sproutbuilder.com/load/NgB2PLmjDc2eh0Xw.swf" /><param name="quality" value="best" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><param name="wmode" value="transparent" /><embed src="http://farm.sproutbuilder.com/load/NgB2PLmjDc2eh0Xw.swf" width="300" height="165" name="playerLoader" align="middle" wmode="transparent" play="true" loop="false" quality="best" allowScriptAccess="always" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer"></embed></object><img style="visibility:hidden;width:0px;height:0px;" border=0 width=0 height=0 src="http://counters.gigya.com/wildfire/IMP/CXNID=2000002.10NXC/bT*xJmx*PTEyMjU4MTk4NTk*MjImcHQ9MTIyNTgxOTg2MTg1OSZwPTEyMDc*MSZkPU5nQjJQTG1qRGMyZWgwWHcmZz*yJnQ9Jm89ZGVlYzdkZWU5MmM1NDg3NGEwYmMzZDEwNTU1MGQzMTA=.gif" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kanske.com/2008/11/04/i-voted/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yoshi, what&#8217;s kind of pen do you carry around with you?</title>
		<link>http://www.kanske.com/2008/05/30/yoshi-whats-kind-of-pen-do-you-carry-around-with-you/</link>
		<comments>http://www.kanske.com/2008/05/30/yoshi-whats-kind-of-pen-do-you-carry-around-with-you/#comments</comments>
		<pubDate>Fri, 30 May 2008 18:00:34 +0000</pubDate>
		<dc:creator>dustin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kanske.com/2008/05/30/yoshi-whats-kind-of-pen-do-you-carry-around-with-you/</guid>
		<description><![CDATA[Yoshi: Ok so keep in my front pocket a black uni-ball vision elite. .08 writing thickness i believe.
Yoshi: It writes thicker than your &#8220;normal&#8221; pen.
Yoshi: so i keep that in my front pocket.
Yoshi: At work i keep a 1 black one and 1 red one. So i write out my GTD lists once a week [...]]]></description>
			<content:encoded><![CDATA[<p>Yoshi: Ok so keep in my front pocket a black uni-ball vision elite. .08 writing thickness i believe.<br />
Yoshi: It writes thicker than your &#8220;normal&#8221; pen.<br />
Yoshi: so i keep that in my front pocket.<br />
Yoshi: At work i keep a 1 black one and 1 red one. So i write out my GTD lists once a week now. Anything important that needs my attention that day is written in red. Red items are my must do.<br />
Yoshi: Here are what the pens i use look like:<br />
<a href="http://www.flickr.com"><img src="http://farm1.static.flickr.com/209/456999513_7173cf42aa.jpg?v=0" alt="three pens" /></a></p>
<p>I did finally find the post he wrote that talked about the pen he uses: <a href="http://www.yousephtanha.com/blog/2007/10/15/notepad-gtd/">Notepad GTD</a></p>
<p>And so I don&#8217;t have to look it up again, <a href="http://www.officedepot.com/a/products/449928/Liquid-Rollerball-Pens-Bold-Point-mm/">Product page at officedepot.com</a></p>
<p>Thanks, <a href="http://www.yousephtanha.com">Yoshi!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kanske.com/2008/05/30/yoshi-whats-kind-of-pen-do-you-carry-around-with-you/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Weakness in Debian undermines crypto. Also, increase in brute-force SSH attacks.</title>
		<link>http://www.kanske.com/2008/05/15/weakness-in-debian-undermines-crypto-also-increase-in-brute-force-ssh-attacks/</link>
		<comments>http://www.kanske.com/2008/05/15/weakness-in-debian-undermines-crypto-also-increase-in-brute-force-ssh-attacks/#comments</comments>
		<pubDate>Fri, 16 May 2008 07:52:13 +0000</pubDate>
		<dc:creator>dustin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kanske.com/2008/05/15/weakness-in-debian-undermines-crypto-also-increase-in-brute-force-ssh-attacks/</guid>
		<description><![CDATA[Luckily I only had a few hosts to update, and only the host keys, not any authorized_keys files. It&#8217;s important to review any public SSH keys that you&#8217;ve added to authorized_keys files, fix ssh host keys (apt-get dist-upgrade on debian), and deal with SSL certs generated on affected Debian (and derivative) distributions.
Ubuntu Security Notice USN-612-1
Weakness [...]]]></description>
			<content:encoded><![CDATA[<p>Luckily I only had a few hosts to update, and only the host keys, not any authorized_keys files. It&#8217;s important to review any public SSH keys that you&#8217;ve added to authorized_keys files, fix ssh host keys (apt-get dist-upgrade on debian), and deal with SSL certs generated on affected Debian (and derivative) distributions.</p>
<p><a href="http://www.ubuntu.com/usn/usn-612-1">Ubuntu Security Notice USN-612-1</a></p>
<p><a href="http://www.securityfocus.com/brief/739">Weakness in Debian undermines crypto</a></p>
<ul>
<li>&#8220;A flaw in the way that OpenSSL is implemented in the Ubuntu and Debian distributions of Linux have earned the software an unenviable adjective in the world of encryption: Predictable.&#8221;</li>
<li>&#8220;All OpenSSH and X.509 keys generated on such systems must be considered untrustworthy, regardless of the system on which they are used, even after the update has been applied&#8221;</li>
<li>&#8220;This flaw is ugly because even systems that do not use the Debian software need to be audited in case any key is being used that was created on a Debian system.&#8221;</li>
</ul>
<p><a href="http://metasploit.com/users/hdm/tools/debian-openssl/">Debian OpenSSL Predictable PRNG Toys</a></p>
<ul>
<li>&#8220;All SSL and SSH keys generated on Debian-based systems (Ubuntu, Kubuntu, etc) between September 2006 and May 13th, 2008 may be affected. In the case of SSL keys, all generated certificates will be need to recreated and sent off to the Certificate Authority to sign. Any Certificate Authority keys generated on a Debian-based system will need be regenerated and revoked. All system administrators that allow users to access their servers with SSH and public key authentication need to audit those keys to see if any of them were created on a vulnerabile system. Any tools that relied on OpenSSL&#8217;s PRNG to secure the data they transferred may be vulnerable to an offline attack. Any SSH server that uses a host key generated by a flawed system is subject to traffic decryption and a man-in-the-middle attack would be invisible to the users. This flaw is ugly because even systems that do not use the Debian software need to be audited in case any key is being used that was created on a Debian system.&#8221;</li>
</ul>
<p><a href="http://milw0rm.com/exploits/5622">Debian OpenSSL Predictable PRNG Bruteforce SSh Exploit</a></p>
<ul>
<li>&#8220;Enjoy the shell after some minutes (less than 20 minutes)&#8221;</li>
</ul>
<p>In other news, brute-force SSH attacks are on the rise. </p>
<p><a href="http://www.securityfocus.com/news/11518">Admins warned of brute-force SSH attacks</a></p>
<p>A couple OpenSSH tips that come to mind:</p>
<ul>
<li>Have OpenSSH Listen on a non-standard port. This can reduce the risk of automated scans, etc. It can also make it more tedious to ssh to hosts. (&#8220;Listen addr:port&#8221; in sshd_config). I personally don&#8217;t like this option.</li>
<li>Disable password-based authentication. (&#8220;PasswordAuthentication no&#8221; in sshd_config)</li>
<li>Restrict access to accounts by IP address. <a href="http://ubuntuforums.org/showthread.php?t=523477">sshd_config allowed users</a></li>
<li>Watch your sshd logs and deny access.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.kanske.com/2008/05/15/weakness-in-debian-undermines-crypto-also-increase-in-brute-force-ssh-attacks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Buddy Media Spams Facebook Users</title>
		<link>http://www.kanske.com/2008/05/13/buddy-media-spams-facebook-users/</link>
		<comments>http://www.kanske.com/2008/05/13/buddy-media-spams-facebook-users/#comments</comments>
		<pubDate>Tue, 13 May 2008 20:28:14 +0000</pubDate>
		<dc:creator>dustin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kanske.com/2008/05/13/buddy-media-spams-facebook-users/</guid>
		<description><![CDATA[Buddy Media, creator of AceBucks,  buys Facebook Apps from ChipIn and then spams the users:


I am not an AceBucks member.
I did not express interest in receiving emails regarding AceBucks.
This email was in no way related to the Pirates vs Ninjas application itself.

]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.buddymedia.com">Buddy Media</a>, creator of <a href="http://www.buddymedia.com/loyalty.php">AceBucks</a>,  <a href="http://blog.chipin.com/2008/01/02/chipin-sells-versus-apps-to-buddy-media/">buys Facebook Apps from ChipIn</a> and then spams the users:</p>
<p><img src="http://www.kanske.com/dustin/buddy_media_spam.png" alt="Buddy Media Spam" /></p>
<ol>
<li>I am not an AceBucks member.
<li>I did not express interest in receiving emails regarding AceBucks.
<li>This email was in no way related to the Pirates vs Ninjas application itself.
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.kanske.com/2008/05/13/buddy-media-spams-facebook-users/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Power Outage &#8211; Hotel</title>
		<link>http://www.kanske.com/2007/09/27/power-outage-hotel/</link>
		<comments>http://www.kanske.com/2007/09/27/power-outage-hotel/#comments</comments>
		<pubDate>Thu, 27 Sep 2007 10:25:56 +0000</pubDate>
		<dc:creator>dustin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kanske.com/2007/09/27/power-outage-hotel/</guid>
		<description><![CDATA[The hotel across the street lost power:

They finally got power back after several hours:

(I need to get a tripod)
]]></description>
			<content:encoded><![CDATA[<p>The hotel across the street lost power:</p>
<p><img src="http://www.whitedood.com/hotel_before.jpg" alt="Hotel - No Power" /></p>
<p>They finally got power back after several hours:</p>
<p><img src="http://www.whitedood.com/hotel_after.jpg" alt="Hotel - No Power" /></p>
<p>(I need to get a tripod)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kanske.com/2007/09/27/power-outage-hotel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>John Petrucci &#8211; Fast Guitar</title>
		<link>http://www.kanske.com/2007/09/16/john-petrucci-fast-guitar/</link>
		<comments>http://www.kanske.com/2007/09/16/john-petrucci-fast-guitar/#comments</comments>
		<pubDate>Sun, 16 Sep 2007 10:42:12 +0000</pubDate>
		<dc:creator>dustin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kanske.com/2007/09/16/john-petrucci-fast-guitar/</guid>
		<description><![CDATA[John Petrucci has a video out called &#8220;Rock Discipline&#8221;. This video attacks the speed that he plays at. I was in tears watching it.

]]></description>
			<content:encoded><![CDATA[<p>John Petrucci has a video out called &#8220;Rock Discipline&#8221;. This video attacks the speed that he plays at. I was in tears watching it.</p>
<p><object width="425" height="353"><param name="movie" value="http://www.youtube.com/v/evTTHS9hwvU"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/evTTHS9hwvU" type="application/x-shockwave-flash" wmode="transparent" width="425" height="353"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kanske.com/2007/09/16/john-petrucci-fast-guitar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More Ruby fun &#8211; uuidtools and uuid gems and Mac Addresses</title>
		<link>http://www.kanske.com/2007/03/22/more-ruby-fun-uuidtools-and-uuid-gems-and-mac-addresses/</link>
		<comments>http://www.kanske.com/2007/03/22/more-ruby-fun-uuidtools-and-uuid-gems-and-mac-addresses/#comments</comments>
		<pubDate>Fri, 23 Mar 2007 04:21:35 +0000</pubDate>
		<dc:creator>dustin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kanske.com/?p=10</guid>
		<description><![CDATA[Be careful if running your ruby application in a VPS that doesn&#8217;t have a standard MAC address (OpenVZ/Virtuozzo).

[rails@rails ~]$ irb
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'uuidtools'
=> true
irb(main):003:0> UUID.timestamp_create
NoMethodError: private method `split' called for nil:NilClass
        from /usr/local/lib/ruby/gems/1.8/gems/uuidtools-1.0.0/lib/uuidtools.rb:236:in `timestamp_create'
        from /usr/local/lib/ruby/gems/1.8/gems/uuidtools-1.0.0/lib/uuidtools.rb:226:in `synchronize'
   [...]]]></description>
			<content:encoded><![CDATA[<p>Be careful if running your ruby application in a VPS that doesn&#8217;t have a standard MAC address (OpenVZ/Virtuozzo).</p>
<p><code><br />
[rails@rails ~]$ irb<br />
irb(main):001:0> require 'rubygems'<br />
=> true<br />
irb(main):002:0> require 'uuidtools'<br />
=> true<br />
irb(main):003:0> UUID.timestamp_create<br />
NoMethodError: private method `split' called for nil:NilClass<br />
        from /usr/local/lib/ruby/gems/1.8/gems/uuidtools-1.0.0/lib/uuidtools.rb:236:in `timestamp_create'<br />
        from /usr/local/lib/ruby/gems/1.8/gems/uuidtools-1.0.0/lib/uuidtools.rb:226:in `synchronize'<br />
        from /usr/local/lib/ruby/gems/1.8/gems/uuidtools-1.0.0/lib/uuidtools.rb:226:in `timestamp_create'<br />
        from (irb):3<br />
irb(main):004:0><br />
</code></p>
<p>UUID.random_create works though</p>
<p><code><br />
irb(main):005:0> UUID.random_create<br />
=> #&ls;UUID:0x20254aac UUID:debe5522-85e3-4119-8e31-5746f8f52449&gt;<br />
</code></p>
<p>As a side note, the uuid gem has problems determining the MAC address when creating its state file as well.</p>
<p><code><br />
-bash-3.00# uuid-setup<br />
uuid: No UUID state file found, attempting to create one for you:<br />
/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27: command not found: ipconfig /all<br />
Could not find any IEEE 802 NIC MAC addresses for this machine.<br />
You need to create the uuid.state file manually.<br />
</code></p>
<p>When using this I would manually create the uuid.state file and place it in /usr/local/lib/ruby/gems/1.8/gems/uuid-1.0.3 (I don&#8217;t remember exactly, and have since removedthe uuid gem). If you don&#8217;t your app will complain about the uuid.state file being missing.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kanske.com/2007/03/22/more-ruby-fun-uuidtools-and-uuid-gems-and-mac-addresses/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Rails, Capistrano and ssh-agent on Mac OS X</title>
		<link>http://www.kanske.com/2007/03/22/rails-capistrano-and-ssh-agent-on-mac-os-x/</link>
		<comments>http://www.kanske.com/2007/03/22/rails-capistrano-and-ssh-agent-on-mac-os-x/#comments</comments>
		<pubDate>Thu, 22 Mar 2007 20:48:51 +0000</pubDate>
		<dc:creator>dustin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kanske.com/?p=9</guid>
		<description><![CDATA[I came across the following error trace when attempting to use Capistrano to set up my app:

$ cap -f config/deploy-client.rb setup
  * executing task setup
  * executing "umask 02 &#038;&#038;\n    mkdir -p /u/apps/myapp /u/apps/myapp/releases /u/apps/myapp/shared
    /u/apps/myapp/shared/system &#038;&#038;\n    mkdir -p /u/apps/myapp/shared/log &#038;&#038;\n    [...]]]></description>
			<content:encoded><![CDATA[<p>I came across the following error trace when attempting to use Capistrano to set up my app:</p>
<p><code><br />
$ cap -f config/deploy-client.rb setup<br />
  * executing task setup<br />
  * executing "umask 02 &#038;&#038;\n    mkdir -p /u/apps/myapp /u/apps/myapp/releases /u/apps/myapp/shared<br />
    /u/apps/myapp/shared/system &#038;&#038;\n    mkdir -p /u/apps/myapp/shared/log &#038;&#038;\n    mkdir -p /u/apps/myapp/shared/pids"<br />
    servers: ["myapp.hostname.com"]<br />
/sw/lib/ruby/gems/1.8/gems/net-ssh-1.0.10/lib/net/ssh/userauth/agent.rb:70:in `initialize':<br />
No such file or directory - /tmp/501/nl.uu.phil.SSHAgent.socket (Errno::ENOENT)<br />
        from /sw/lib/ruby/gems/1.8/gems/net-ssh-1.0.10/lib/net/ssh/userauth/agent.rb:70:in `connect!'<br />
--snip--<br />
</code></p>
<p>I haven&#8217;t had time to track down the issue yet, but starting up ssh-agent seems to fix the problem. I never had to use ssh-agent before to make Capistrano work.</p>
<p>$ ssh-agent bash<br />
$ ssh-add</p>
<p>Then I run my cap tasks from that shell instance. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kanske.com/2007/03/22/rails-capistrano-and-ssh-agent-on-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How much information do you want to expose?</title>
		<link>http://www.kanske.com/2007/02/28/how-much-information-do-you-want-to-expose/</link>
		<comments>http://www.kanske.com/2007/02/28/how-much-information-do-you-want-to-expose/#comments</comments>
		<pubDate>Wed, 28 Feb 2007 10:19:35 +0000</pubDate>
		<dc:creator>dustin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kanske.com/?p=8</guid>
		<description><![CDATA[(It may seem trivial, and probably is trivial) I wrote about obfuscating the primary keys for your critical tables here: http://www.kanske.com/?p=7 
I came across a reason why you do that recently when I discovered a potential chipin.com competitor. 
A friend brought up the fact that we (chipin.com) have a competitor (Pledgie.com). The first thing that [...]]]></description>
			<content:encoded><![CDATA[<p>(It may seem trivial, and probably is trivial) I wrote about obfuscating the primary keys for your critical tables here: <a href="http://www.kanske.com/?p=7">http://www.kanske.com/?p=7 </a></p>
<p>I came across a reason why you do that recently when I discovered a potential chipin.com competitor. </p>
<p>A friend brought up the fact that we (chipin.com) have a competitor (Pledgie.com). The first thing that comes to mind is, how many customers do they have? How many events in their system? How much money have they collected? Do we need to worry about them?</p>
<p>They expose the primary key for both their account table and their event table. It appears that they have less than 42 campaigns (max campaign id at the time http://pledgie.com/campaign/show/42) and less than 87 users (max account id is 87 http://pledgie.com/account/show/87).</p>
<p>With a fixed number of events and users it&#8217;s possible to write a script to summarize how much money has been collected.</p>
<p>This isn&#8217;t the only source of such information, but it sure is low-hanging fruit.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kanske.com/2007/02/28/how-much-information-do-you-want-to-expose/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Obfuscating IDs for Records</title>
		<link>http://www.kanske.com/2007/02/07/obfuscating-ids-for-records/</link>
		<comments>http://www.kanske.com/2007/02/07/obfuscating-ids-for-records/#comments</comments>
		<pubDate>Thu, 08 Feb 2007 09:21:01 +0000</pubDate>
		<dc:creator>dustin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kanske.com/?p=7</guid>
		<description><![CDATA[Why are we using hex strings as unique identifiers for certain resources in our system?
Here are two sample URLS for accessing the same resource. One uses the primary key which in this case is a simple auto-incrementing integer field. The  second case is a big random number in hex format.

integer auto_increment key: http://example.com/product/100
large random [...]]]></description>
			<content:encoded><![CDATA[<h2>Why are we using hex strings as unique identifiers for certain resources in our system?</h2>
<p>Here are two sample URLS for accessing the same resource. One uses the primary key which in this case is a simple auto-incrementing integer field. The  second case is a big random number in hex format.</p>
<ul>
<li>integer auto_increment key: http://example.com/product/100</li>
<li>large random integer encoded in hex: http://example.com/product/de34f46a3b7fea74</li>
</ul>
<p>They can be used for security. For things like sessions, you want to make a unique session ID &#8216;hard to guess&#8217;. You want to make it difficult to  brute-force  the ID to gain access to an individual session.</p>
<p>The point of this post is to address the other reasons for using a &#8216;large random integer encoded in hex&#8217;. Obscurity. By *not* using a simple  auto_increment field as a primary key and using some  sort of digest or random number encoded as a hex string, you are doing three things:</p>
<ol>
<li>Obscuring counts for resources from the public.</li>
<li>Hiding Rates of change of those counts from the public.</li>
<li>Removing the ability for the public to easily enumerate items in the collection.</li>
</ol>
<p>By exposing the value from a primary key field that uses a simple auto-increment for an id you are disclosing information about the number of records in a  particular table. This may or may not be a concern. If you don&#8217;t care if your competition knows how many of a particular object (accounts) you have created,  this isn&#8217;t an issue.</p>
<p>Not only do you get an absolute count, but you also can get the rate of change. Competitors can potentially monitor the primary keys and determine how  many  new accounts you signed up in a month (just an example). This doesn&#8217;t mean &#8220;rush to obscure this data&#8221;. Think about what you are disclosing. If it&#8217;s not a  concern, move on.</p>
<p>You can remove the ability for a user of the system to iterate over the set of one of your collections. For example, if you include the email address in  the  profile for a user (even a rendered one), it would be more difficult for someone to collect all of the email addresses for your users directly through your  system.</p>
<h2>Questions:</h2>
<p><strong>Why don&#8217;t you just start the sequence out at some fixed number?</strong> This doesn&#8217;t stop someone from finding out the rate of change. Again, that may or  may not be  valuable information.</p>
<p><strong>Why not start the sequence at some fixed number and increment by some random amount?</strong> This helps obscure, but you could still probably determine  what the  range was on the randomness that you added to the equation. With enough data points you could form an average and then determine the rate of change.</p>
<h2>Summary:</h2>
<p>Think about what you are disclosing. If that data is valuable, consider using a different identifier in public.</p>
<p>Also, keep in mind that there are other ways of find out counts of certain information. There are various reporting services out there that can measure  your  web-presence and give data based on that.</p>
<p>One of my co-workers also points out that they are nice to look at, &#8216;<strong>hexy</strong>&#8216; even. That&#8217;s one nice <strong>hexy</strong> digest right there!</p>
<p>2007-11-23 Update: At the time of writing this I had not considered any performance concerns of using a non-auto-increment primary key with InnoDB. Toad from #facebook on irc.freenode.net mentions &#8220;data is stored in PK order in innodb, which means there&#8217;s a lot more page splitting going on when you do inserts&#8221;. He goes on to suggest that obfuscating the id in the URL only is a better approach. You can use a symmetric cypher encryption mechanism to obfuscate the id when using it in an URL. There are some trade-offs with this method as well though. You have to take steps to protect that key you are using to encrypt the primary key, else developers on your project will hold the knowledge to figure out what your primary keys are based on the encrypted version. One other thing I&#8217;ve done is to not use the obfuscated unique id as the primary key, but as a separate unique key on the same table, while using an auto-increment field as the primary id.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kanske.com/2007/02/07/obfuscating-ids-for-records/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>23lbs vs 2lbs</title>
		<link>http://www.kanske.com/2007/01/28/23lbs-vs-2lbs/</link>
		<comments>http://www.kanske.com/2007/01/28/23lbs-vs-2lbs/#comments</comments>
		<pubDate>Mon, 29 Jan 2007 04:29:56 +0000</pubDate>
		<dc:creator>dustin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kanske.com/?p=6</guid>
		<description><![CDATA[I was looking into pricing for an all-in-one printer-fax-scanner-copier after a friend recommended the HP PSC 2410 Multifunction. Amazon had one listed here HP PSC 2410 Multifunction
What caught my eye was the product weight vs what they said the shipping weight was.

Does that mean that i&#8217;ll get 21 pounds of packing peanuts and other assorted [...]]]></description>
			<content:encoded><![CDATA[<p>I was looking into pricing for an all-in-one printer-fax-scanner-copier after a friend recommended the <strong class="sans">HP PSC 2410 Multifunction.</strong><span class="sans"> Amazon had one listed here </span><a target="_blank" title="HP PSC 2410 Multifunction " href="http://www.amazon.com/Hewlett-Packard-Q3087A-ABA-2410-Multifunction/dp/B0000C9ZJW"><span class="sans">HP PSC 2410 Multifunction</span></a></p>
<p>What caught my eye was the product weight vs what they said the shipping weight was.</p>
<p><img alt="Product weight vs shipping weight" title="Product weight vs shipping weight" src="http://www.kanske.com/images/hpq3087a.png" /><br />
Does that mean that i&#8217;ll get 21 pounds of packing peanuts and other assorted packaging?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kanske.com/2007/01/28/23lbs-vs-2lbs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Laie</title>
		<link>http://www.kanske.com/2007/01/14/5/</link>
		<comments>http://www.kanske.com/2007/01/14/5/#comments</comments>
		<pubDate>Sun, 14 Jan 2007 22:12:13 +0000</pubDate>
		<dc:creator>dustin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kanske.com/?p=5</guid>
		<description><![CDATA[  

Driving north on the windward side of Oahu on Kamehameha Highway you will come across an area called Laie Bay. Just north of the Polynesian Cultural Center there is a stoplight at a shopping center. Turning right onto Anemoku and then right again onto Naupaka St will bring you to a parking area [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px; margin-bottom: 10px"><a title="photo sharing" href="http://www.flickr.com/photos/dustinkanske/357408536/"><img style="border: 2px solid #000000" src="http://farm1.static.flickr.com/136/357408536_bdc739ad83_m.jpg" /></a> <a title="photo sharing" href="http://www.flickr.com/photos/dustinkanske/357408258/"><img style="border: 2px solid #000000" src="http://farm1.static.flickr.com/148/357408258_734c3cd99a_m.jpg" /></a> <span style="font-size: 0.9em; margin-top: 0px"><br />
</span></div>
<p>Driving north on the windward side of Oahu on Kamehameha Highway you will come across an area called Laie Bay. Just north of the Polynesian Cultural Center there is a stoplight at a shopping center. Turning right onto Anemoku and then right again onto Naupaka St will bring you to a parking area where you can wander out on the spit. You will probably find people fishing or having a picnic.<br />
<a href="http://maps.google.com/?ie=UTF8&#038;om=1&#038;z=17&#038;ll=21.648179,-157.913387&#038;spn=0.006023,0.008476&#038;t=h"><img src="/images/gm_thumb_laie.png" /></a> <br clear="all" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kanske.com/2007/01/14/5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Holly and &#8216;Terd&#8217;</title>
		<link>http://www.kanske.com/2007/01/14/holly/</link>
		<comments>http://www.kanske.com/2007/01/14/holly/#comments</comments>
		<pubDate>Sun, 14 Jan 2007 21:50:13 +0000</pubDate>
		<dc:creator>dustin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kanske.com/?p=4</guid>
		<description><![CDATA[
Holly
Originally uploaded by Kanske 2.
My parents took a picture of my cat Holly and Doug posted it. She&#8217;s got to be over 20 years old at this point. My dad says that if you give her a little push she&#8217;ll roll over on her side and drool on herself. She doesn&#8217;t go out hunting much [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px; margin-bottom: 10px"><a title="photo sharing" href="http://www.flickr.com/photos/kanske2/318074648/"><img style="border: 2px solid #000000" src="http://farm1.static.flickr.com/130/318074648_ca2b88ed25_m.jpg" /></a><span style="font-size: 0.9em; margin-top: 0px"><br />
<a href="http://www.flickr.com/photos/kanske2/318074648/">Holly</a></span></p>
<p>Originally uploaded by <a href="http://www.flickr.com/people/kanske2/">Kanske 2</a>.</div>
<p>My parents took a picture of my cat Holly and Doug posted it. She&#8217;s got to be over 20 years old at this point. My dad says that if you give her a little push she&#8217;ll roll over on her side and drool on herself. She doesn&#8217;t go out hunting much anymore but still gets around okay. This picture was taken after much of her matted hair was shaved off.<br />
<br clear="all" /></p>
<div style="float: right; margin-left: 10px; margin-bottom: 10px"><a title="photo sharing" href="http://www.flickr.com/photos/kanske2/318074657/"><img style="border: 2px solid #000000" src="http://farm1.static.flickr.com/129/318074657_a8525a6d50_m.jpg" /></a><span style="font-size: 0.9em; margin-top: 0px"><br />
<a href="http://www.flickr.com/photos/kanske2/318074657/">Terd</a></span></p>
<p>Originally uploaded by <a href="http://www.flickr.com/people/kanske2/">Kanske 2</a>.</div>
<p>Here&#8217;s my parents&#8217; dog &#8216;Terd&#8217;. He looks so happy!<br />
<br clear="all" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kanske.com/2007/01/14/holly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SVN on a USB Flash Drive</title>
		<link>http://www.kanske.com/2006/12/23/svn-on-a-usb-flash-drive/</link>
		<comments>http://www.kanske.com/2006/12/23/svn-on-a-usb-flash-drive/#comments</comments>
		<pubDate>Sun, 24 Dec 2006 09:22:46 +0000</pubDate>
		<dc:creator>dustin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.kanske.com/?p=3</guid>
		<description><![CDATA[I picked up a new 2GB USB Flash Drive (aka Thumb Drive, whatever) and started copying files over to it. I had all of my documentation and keys copied over and thought, how handy would it be to have a copy of one of my Subversion repositories on here? What sounded like a good idea [...]]]></description>
			<content:encoded><![CDATA[<p>I picked up a new 2GB USB Flash Drive (aka Thumb Drive, whatever) and started copying files over to it. I had all of my documentation and keys copied over and thought, how handy would it be to have a copy of one of my Subversion repositories on here? What sounded like a good idea turned out to work, but wasn&#8217;t exactly fast.</p>
<p>I knew that it was going to be slow, but I figured it would be manageable.</p>
<p>First I started the process of checking out the repo to the flash drive. I&#8217;ll report those results later. Next I checked out a copy to my local hard drive.</p>
<p>Here are the results:</p>
<pre>laptop:~/repos dustin$ time svn co
https://svnhost.com/svn/repo/trunk repo
--snip 596 A entries--
Checked out revision 133.
real    0m36.646s
user    0m2.690s
sys     0m5.628s</pre>
<p>The results were lightning fast! Less than 37 seconds. So far, 53 entries have been checked out to the flash drive.</p>
<p>Okay, time to go clean the apartment a bit.</p>
<p>Back. It&#8217;s still going. So far i&#8217;ve cleaned up all of the trash and taken that out, washed the dishes, cleaned the stove, sink, counter, etc. The bathroom is clean now and i&#8217;ve got a load of clothes going.</p>
<p>Oh look. Joy:</p>
<pre>svn: REPORT request failed on '/svn/repo/!svn/vcc/default'
svn: REPORT of '/svn/repo/!svn/vcc/default': Could not read response body: Secure connection truncated (https://svnhost.com)
real    52m50.427s
user    0m2.777s
sys     0m13.751s</pre>
<p>almost 53 minutes. it didn&#8217;t complete and there&#8217;s a lock. svn cleanup.</p>
<pre>laptop:/flash/repos dustin$ cd repo
laptop:/flash/repos dustin$ svn status</pre>
<p>not good. minutes later it needs cleanup. 7 minutes later the cleanup finished. time to update. 12 minutes later the update finished. I now have a cleanly checked out copy of the repository.</p>
<p>So, after an hour and a half, i&#8217;ve got the repo checked out. Score!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kanske.com/2006/12/23/svn-on-a-usb-flash-drive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
