<?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 for Tender Lovemaking</title>
	<atom:link href="http://tenderlovemaking.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://tenderlovemaking.com</link>
	<description>The act of making love, tenderly.</description>
	<lastBuildDate>Mon, 21 May 2012 21:22:48 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>Comment on PSA: The number of gems installed on your system can impact rails boot time by raggi</title>
		<link>http://tenderlovemaking.com/2011/11/30/psa-the-number-of-gems-installed-on-your-system-can-impact-rails-boot-time/comment-page-1/#comment-157398</link>
		<dc:creator>raggi</dc:creator>
		<pubDate>Mon, 21 May 2012 21:22:48 +0000</pubDate>
		<guid isPermaLink="false">http://tenderlovemaking.com/?p=574#comment-157398</guid>
		<description>Gah, third comment..


It&#039;s also worth noting (potentially for future Rubygems patches), that RubyGems doesn&#039;t need whole gemspecs to do it&#039;s general work (for booting apps and such). In fact, on JIT&#039;d rubies, loading specs is quite a lot more expensive than doing some potential alternatives.

Consider for example, a simple data file containing: [name, version, dependencies, load_paths]

Make this datafile in simple data structures (e.g. tuples) and keep parsing cheap. Use a weakref cache and you&#039;ll be reasonably balanced, other than a small amount of GC fragmentation in the early slots (which is a problem now anyway - just dump ObjectSpace and see how much crap gets retained from gemspec loads and the like even after a bunch of GC runs).

Now crunch those indexes into a single file and maybe (if ruby-core adds mmap to stdlib) mmap it, suddenly all but the stat problem is largely solved.

Food for thought.</description>
		<content:encoded><![CDATA[<p>Gah, third comment..</p>
<p>It&#8217;s also worth noting (potentially for future Rubygems patches), that RubyGems doesn&#8217;t need whole gemspecs to do it&#8217;s general work (for booting apps and such). In fact, on JIT&#8217;d rubies, loading specs is quite a lot more expensive than doing some potential alternatives.</p>
<p>Consider for example, a simple data file containing: [name, version, dependencies, load_paths]</p>
<p>Make this datafile in simple data structures (e.g. tuples) and keep parsing cheap. Use a weakref cache and you&#8217;ll be reasonably balanced, other than a small amount of GC fragmentation in the early slots (which is a problem now anyway &#8211; just dump ObjectSpace and see how much crap gets retained from gemspec loads and the like even after a bunch of GC runs).</p>
<p>Now crunch those indexes into a single file and maybe (if ruby-core adds mmap to stdlib) mmap it, suddenly all but the stat problem is largely solved.</p>
<p>Food for thought.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on PSA: The number of gems installed on your system can impact rails boot time by raggi</title>
		<link>http://tenderlovemaking.com/2011/11/30/psa-the-number-of-gems-installed-on-your-system-can-impact-rails-boot-time/comment-page-1/#comment-157395</link>
		<dc:creator>raggi</dc:creator>
		<pubDate>Mon, 21 May 2012 21:12:34 +0000</pubDate>
		<guid isPermaLink="false">http://tenderlovemaking.com/?p=574#comment-157395</guid>
		<description>Ramdisk for OSX: https://gist.github.com/2764761</description>
		<content:encoded><![CDATA[<p>Ramdisk for OSX: <a href="https://gist.github.com/2764761" rel="nofollow">https://gist.github.com/2764761</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on PSA: The number of gems installed on your system can impact rails boot time by raggi</title>
		<link>http://tenderlovemaking.com/2011/11/30/psa-the-number-of-gems-installed-on-your-system-can-impact-rails-boot-time/comment-page-1/#comment-157394</link>
		<dc:creator>raggi</dc:creator>
		<pubDate>Mon, 21 May 2012 21:12:03 +0000</pubDate>
		<guid isPermaLink="false">http://tenderlovemaking.com/?p=574#comment-157394</guid>
		<description>Just to play devils advocate:

Folks who work on many different projects often spend more time waiting for &quot;bundle install&quot; than they do waiting for rails to boot.

I blogged about this issue many years ago, and it&#039;s still really difficult to solve. The problem is that stat(2) (and indeed almost every viable discovery method for filesystem paths) actually touches the disk, rather than just looking in the filesystem cache.

This can be avoided / solved a number of ways:

 * Run your app in a VM, as then even the stat(2) calls get cached
 * Run your app off of a ramdisk (because ramfs is much faster at stat(2) than even Sata-III and a big on-disk-cache)
 * Mount your app on an in-process stat-cached filesystem backed fusefs driver (no really, that can work fast, and relieve the need to remember to copy files back over to disk from a ramdisk).

There are some things we can do in RubyGems and Ruby to avoid the mad stat calls, but the best solution without changing the existing semantics will rely on Eric Hodels $LOAD_PATH object proposal in order to be cleanly implemented. Ideally, in order to mainain a reasonable time-space efficiency, we need a lightweight heap datastructure in the ruby stdlib that can represent the filesystem tree that RubyGems has installed, so we can walk that heap instead of smashing the filesystem all the time. This isn&#039;t flawless, but as stated (once you research it) it can be solved quite nicely with the $LOAD_PATH object. The issue with implementing it without, is that the load path is managed by more than just RubyGems (sadly), and this has real practical order limitations.

It&#039;s also worth noting though, that load path objects will be a semantic change that will break some popular libraries out there, so as with so many of these age old problems, we&#039;re in for a fun ride if we want to actually fix the root cause.

As for gemsets, once again, please people, realize that if you&#039;re going to install the same gems again and again and again, you may not actually be saving yourself time.</description>
		<content:encoded><![CDATA[<p>Just to play devils advocate:</p>
<p>Folks who work on many different projects often spend more time waiting for &#8220;bundle install&#8221; than they do waiting for rails to boot.</p>
<p>I blogged about this issue many years ago, and it&#8217;s still really difficult to solve. The problem is that stat(2) (and indeed almost every viable discovery method for filesystem paths) actually touches the disk, rather than just looking in the filesystem cache.</p>
<p>This can be avoided / solved a number of ways:</p>
<p> * Run your app in a VM, as then even the stat(2) calls get cached<br />
 * Run your app off of a ramdisk (because ramfs is much faster at stat(2) than even Sata-III and a big on-disk-cache)<br />
 * Mount your app on an in-process stat-cached filesystem backed fusefs driver (no really, that can work fast, and relieve the need to remember to copy files back over to disk from a ramdisk).</p>
<p>There are some things we can do in RubyGems and Ruby to avoid the mad stat calls, but the best solution without changing the existing semantics will rely on Eric Hodels $LOAD_PATH object proposal in order to be cleanly implemented. Ideally, in order to mainain a reasonable time-space efficiency, we need a lightweight heap datastructure in the ruby stdlib that can represent the filesystem tree that RubyGems has installed, so we can walk that heap instead of smashing the filesystem all the time. This isn&#8217;t flawless, but as stated (once you research it) it can be solved quite nicely with the $LOAD_PATH object. The issue with implementing it without, is that the load path is managed by more than just RubyGems (sadly), and this has real practical order limitations.</p>
<p>It&#8217;s also worth noting though, that load path objects will be a semantic change that will break some popular libraries out there, so as with so many of these age old problems, we&#8217;re in for a fun ride if we want to actually fix the root cause.</p>
<p>As for gemsets, once again, please people, realize that if you&#8217;re going to install the same gems again and again and again, you may not actually be saving yourself time.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on rubycommitters.org design contest! by Mario Zigliotto</title>
		<link>http://tenderlovemaking.com/2011/01/04/rubycommitters-org-design-contest/comment-page-1/#comment-156241</link>
		<dc:creator>Mario Zigliotto</dc:creator>
		<pubDate>Mon, 07 May 2012 22:50:19 +0000</pubDate>
		<guid isPermaLink="false">http://tenderlovemaking.com/?p=483#comment-156241</guid>
		<description>Hey Aaron, 

Not sure who has access to updating rubycommitters.org so i&#039;m just leaving a comment here... BUT it looks like there are some spam links @ the bottom of the page that appear to be hard coded into the HTML template but i didn&#039;t see it in the GitHub repo.  

:(</description>
		<content:encoded><![CDATA[<p>Hey Aaron, </p>
<p>Not sure who has access to updating rubycommitters.org so i&#8217;m just leaving a comment here&#8230; BUT it looks like there are some spam links @ the bottom of the page that appear to be hard coded into the HTML template but i didn&#8217;t see it in the GitHub repo.  </p>
<p> <img src='http://tenderlovemaking.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on My Jerky Setup by Travis</title>
		<link>http://tenderlovemaking.com/2012/01/14/my-jerky-setup/comment-page-1/#comment-153148</link>
		<dc:creator>Travis</dc:creator>
		<pubDate>Wed, 07 Mar 2012 18:35:05 +0000</pubDate>
		<guid isPermaLink="false">http://tenderlovemaking.com/?p=584#comment-153148</guid>
		<description>What&#039;s the reasoning behind air drying with no heat?</description>
		<content:encoded><![CDATA[<p>What&#8217;s the reasoning behind air drying with no heat?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Ten Years of Nerd Club by Aaron Patterson</title>
		<link>http://tenderlovemaking.com/2012/02/16/ten-years-of-nerd-club/comment-page-1/#comment-153085</link>
		<dc:creator>Aaron Patterson</dc:creator>
		<pubDate>Mon, 05 Mar 2012 19:54:20 +0000</pubDate>
		<guid isPermaLink="false">http://tenderlovemaking.com/?p=594#comment-153085</guid>
		<description>Sean, thanks for bringing this to my attention.

I&#039;ve let the 37s guys know about the problem. :-)</description>
		<content:encoded><![CDATA[<p>Sean, thanks for bringing this to my attention.</p>
<p>I&#8217;ve let the 37s guys know about the problem. <img src='http://tenderlovemaking.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Ten Years of Nerd Club by Sean Lynch</title>
		<link>http://tenderlovemaking.com/2012/02/16/ten-years-of-nerd-club/comment-page-1/#comment-153084</link>
		<dc:creator>Sean Lynch</dc:creator>
		<pubDate>Mon, 05 Mar 2012 19:45:03 +0000</pubDate>
		<guid isPermaLink="false">http://tenderlovemaking.com/?p=594#comment-153084</guid>
		<description>Aaron,

Don&#039;t know who to contact on the core team for this. Homakov is using his exploit to post back dated comments on the Riding Rails blog.

See some of his comments on your last post:
http://weblog.rubyonrails.org/2012/3/1/ann-rails-3-2-2-has-been-released
for examples.

It seems the Mephisto driven site is not using attr_accessible and attr_protected correctly.

If you are not one of the admins at weblog.rubyonrails, can you point this out to them?

Thanks

Sean</description>
		<content:encoded><![CDATA[<p>Aaron,</p>
<p>Don&#8217;t know who to contact on the core team for this. Homakov is using his exploit to post back dated comments on the Riding Rails blog.</p>
<p>See some of his comments on your last post:<br />
<a href="http://weblog.rubyonrails.org/2012/3/1/ann-rails-3-2-2-has-been-released" rel="nofollow">http://weblog.rubyonrails.org/2012/3/1/ann-rails-3-2-2-has-been-released</a><br />
for examples.</p>
<p>It seems the Mephisto driven site is not using attr_accessible and attr_protected correctly.</p>
<p>If you are not one of the admins at weblog.rubyonrails, can you point this out to them?</p>
<p>Thanks</p>
<p>Sean</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Event based JSON and YAML parsing by Ary Borenszweig</title>
		<link>http://tenderlovemaking.com/2010/04/17/event-based-json-and-yaml-parsing/comment-page-1/#comment-152191</link>
		<dc:creator>Ary Borenszweig</dc:creator>
		<pubDate>Wed, 08 Feb 2012 20:38:58 +0000</pubDate>
		<guid isPermaLink="false">http://tenderlovemaking.com/?p=432#comment-152191</guid>
		<description>Thanks, Aaron! We&#039;ve used your technique to efficiently parse data from Elastic Search.</description>
		<content:encoded><![CDATA[<p>Thanks, Aaron! We&#8217;ve used your technique to efficiently parse data from Elastic Search.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on My Jerky Setup by Aaron Patterson</title>
		<link>http://tenderlovemaking.com/2012/01/14/my-jerky-setup/comment-page-1/#comment-151971</link>
		<dc:creator>Aaron Patterson</dc:creator>
		<pubDate>Wed, 01 Feb 2012 18:16:49 +0000</pubDate>
		<guid isPermaLink="false">http://tenderlovemaking.com/?p=584#comment-151971</guid>
		<description>I haven&#039;t modified his recipe much besides added cayenne pepper.  It&#039;s a really good recipe!</description>
		<content:encoded><![CDATA[<p>I haven&#8217;t modified his recipe much besides added cayenne pepper.  It&#8217;s a really good recipe!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on My Jerky Setup by Mike Mayo</title>
		<link>http://tenderlovemaking.com/2012/01/14/my-jerky-setup/comment-page-1/#comment-151970</link>
		<dc:creator>Mike Mayo</dc:creator>
		<pubDate>Wed, 01 Feb 2012 16:26:34 +0000</pubDate>
		<guid isPermaLink="false">http://tenderlovemaking.com/?p=584#comment-151970</guid>
		<description>Aside from not using the furnace air filter method, have you modified the rest of his recipe any?</description>
		<content:encoded><![CDATA[<p>Aside from not using the furnace air filter method, have you modified the rest of his recipe any?</p>
]]></content:encoded>
	</item>
</channel>
</rss>

