<?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"
	>
<channel>
	<title>Comments on: MinneBar Conference Report</title>
	<atom:link href="http://enfranchisedmind.com/blog/2007/04/21/minnebar-conference-report/feed/" rel="self" type="application/rss+xml" />
	<link>http://enfranchisedmind.com/blog/2007/04/21/minnebar-conference-report/</link>
	<description>Robert Fischer and Brian Hurt on Punditry, Programming Languages, and Other Religious Issues</description>
	<pubDate>Thu, 20 Nov 2008 08:44:49 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
		<item>
		<title>By: Enfranchised Mind &#187; Thoughts from MinneBar Echoed in the Blogosphere</title>
		<link>http://enfranchisedmind.com/blog/2007/04/21/minnebar-conference-report/#comment-31072</link>
		<dc:creator>Enfranchised Mind &#187; Thoughts from MinneBar Echoed in the Blogosphere</dc:creator>
		<pubDate>Thu, 07 Jun 2007 18:50:10 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2007/04/21/229#comment-31072</guid>
		<description>[...] when I mentioned David Heinemeier Hansson talking about Rails concurrency in my MinneBar [...]</description>
		<content:encoded><![CDATA[<p>[...] when I mentioned David Heinemeier Hansson talking about Rails concurrency in my MinneBar [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert</title>
		<link>http://enfranchisedmind.com/blog/2007/04/21/minnebar-conference-report/#comment-12640</link>
		<dc:creator>Robert</dc:creator>
		<pubDate>Sun, 22 Apr 2007 22:01:11 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2007/04/21/229#comment-12640</guid>
		<description>I got into this a bit during the session (when DHH chimed in) -- the thing that's interesting abour Rails is that it has one, explicit niche: website handling.  And in the case of website, the level of actual computation needed per transaction is pretty minimal in comparison to network access speeds.  Even the cost of spawning an entirely new processes is pretty minimal.  So the performance of Ruby on Rails isn't a critical issue -- this point was actually made by DHH during his "couch talk".  And this continues to be true considering the growth of AJAX and its one-request-one-piece-of-work approach.

Now, this is a niche case.  For "heavy lifting" applications (like most business batch applications, and even moderately un-thin clients), the performance limitations are in the way data is managed and handled.  That's where multithreaded applications are huge, and getting multithreaded capability for cheap is a major win.</description>
		<content:encoded><![CDATA[<p>I got into this a bit during the session (when DHH chimed in) &#8212; the thing that&#8217;s interesting abour Rails is that it has one, explicit niche: website handling.  And in the case of website, the level of actual computation needed per transaction is pretty minimal in comparison to network access speeds.  Even the cost of spawning an entirely new processes is pretty minimal.  So the performance of Ruby on Rails isn&#8217;t a critical issue &#8212; this point was actually made by DHH during his &#8220;couch talk&#8221;.  And this continues to be true considering the growth of AJAX and its one-request-one-piece-of-work approach.</p>
<p>Now, this is a niche case.  For &#8220;heavy lifting&#8221; applications (like most business batch applications, and even moderately un-thin clients), the performance limitations are in the way data is managed and handled.  That&#8217;s where multithreaded applications are huge, and getting multithreaded capability for cheap is a major win.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: MinneBar 2007 &#171; Ross Niemi&#8217;s Musings</title>
		<link>http://enfranchisedmind.com/blog/2007/04/21/minnebar-conference-report/#comment-12625</link>
		<dc:creator>MinneBar 2007 &#171; Ross Niemi&#8217;s Musings</dc:creator>
		<pubDate>Sun, 22 Apr 2007 17:04:22 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2007/04/21/229#comment-12625</guid>
		<description>[...] Functional Languages and Agile Development - Robert Fischer [...]</description>
		<content:encoded><![CDATA[<p>[...] Functional Languages and Agile Development - Robert Fischer [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian</title>
		<link>http://enfranchisedmind.com/blog/2007/04/21/minnebar-conference-report/#comment-12617</link>
		<dc:creator>Brian</dc:creator>
		<pubDate>Sun, 22 Apr 2007 16:10:31 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2007/04/21/229#comment-12617</guid>
		<description>Ruby on Rails model of concurrency is also known as the "Unix Version 6" model of cocurrency- if you want more concurrency, just run more programs, or more copies of the same program.  With Unix version 6, the model was seperate programs in seperate address spaces communicating via the operating system (specifically, the file system).  With the Web, it's seperate programs in seperate address spaces and possibly on seperate machines communicating via the database.  

This is also known as the mainframe model- dumb terminals connecting to a central server where all storage and most computation occurs.  All that's happened is that we've change the names (to protect the guilty) and slapped a layer of graphical gloss over the whole thing to obscure the outlines.  That, and a steaming pile of hype.

Having been around this merry-go-round at least once already, let me tell you what comes next.  People will discover, to their shock and horror, that centralized servers are single points of failure.  They won't go down often, but when they do go down, the outages will be system-wide.  Some backhoe will cut the trunk lines to Google, and suddenly no one will be able to read their email, check their calendars, or (comming soon) use their office suite.  Google has an extraordinary reliability and huge amount of redundency- &lt;EM&gt;so did the mainframes&lt;/EM&gt;.

The other thing people will realize is that there is more storage, and more processing power, on the edges of the network than there is in the center.  This has been true for at least 25 years (since the introduction of the PC), and arguably longer.  The resources at the center are more efficiently used, it's true.  Which raises the question of wether these resources can be utilized, even if less efficiently?  Can we push processing, or storage, out to the client?

Back in the eighties, this was called the "fat client" solution.

In either case, the problem of parallel execution remains.  The CPU companies have, if effect, &lt;EM&gt;given up on single threaded performance&lt;/EM&gt;.  There will be clock speed improvements, but (unless and until we solve the power leakage problem) they're be fewer and farther between than we've come to expect.  Moores law never gaurenteed that clock speeds would double every two years.  Just that the number of transistors on a chip would double.

Which means that if you want to improve the response time of a single process- of a single transaction, in web terms- you have to go multithreaded.  

You also run into a problem when you have more processors than programs to run on them.  If your web site is getting 100 hits at a time, and has 100 processors, this works- each processor deals with a single, unique transaction.  But if you have 200 processors and 100 hits, you have two choices- either use multiple processors per transaction, or simply not use half your processing power.  Since the number of threads are, more or less, doubling every generation, by ignoring half you threads it means your web site runs no faster on this generation of hardware than on last generation's hardware.  And what happens next generation, when you're handed 400 processors?

You can ignore this, for the moment.  Even single threaded, processors today provide a huge amount of computing power- esepcially compared to the bandwidth limitations of memory, disk, and internet access speeds.  And, if your programming language is slow enough to start with, you can provide huge leaps in performance simply by fixing your language.  But, sooner or later, multithreaded is going to happen.</description>
		<content:encoded><![CDATA[<p>Ruby on Rails model of concurrency is also known as the &#8220;Unix Version 6&#8243; model of cocurrency- if you want more concurrency, just run more programs, or more copies of the same program.  With Unix version 6, the model was seperate programs in seperate address spaces communicating via the operating system (specifically, the file system).  With the Web, it&#8217;s seperate programs in seperate address spaces and possibly on seperate machines communicating via the database.  </p>
<p>This is also known as the mainframe model- dumb terminals connecting to a central server where all storage and most computation occurs.  All that&#8217;s happened is that we&#8217;ve change the names (to protect the guilty) and slapped a layer of graphical gloss over the whole thing to obscure the outlines.  That, and a steaming pile of hype.</p>
<p>Having been around this merry-go-round at least once already, let me tell you what comes next.  People will discover, to their shock and horror, that centralized servers are single points of failure.  They won&#8217;t go down often, but when they do go down, the outages will be system-wide.  Some backhoe will cut the trunk lines to Google, and suddenly no one will be able to read their email, check their calendars, or (comming soon) use their office suite.  Google has an extraordinary reliability and huge amount of redundency- <em>so did the mainframes</em>.</p>
<p>The other thing people will realize is that there is more storage, and more processing power, on the edges of the network than there is in the center.  This has been true for at least 25 years (since the introduction of the PC), and arguably longer.  The resources at the center are more efficiently used, it&#8217;s true.  Which raises the question of wether these resources can be utilized, even if less efficiently?  Can we push processing, or storage, out to the client?</p>
<p>Back in the eighties, this was called the &#8220;fat client&#8221; solution.</p>
<p>In either case, the problem of parallel execution remains.  The CPU companies have, if effect, <em>given up on single threaded performance</em>.  There will be clock speed improvements, but (unless and until we solve the power leakage problem) they&#8217;re be fewer and farther between than we&#8217;ve come to expect.  Moores law never gaurenteed that clock speeds would double every two years.  Just that the number of transistors on a chip would double.</p>
<p>Which means that if you want to improve the response time of a single process- of a single transaction, in web terms- you have to go multithreaded.  </p>
<p>You also run into a problem when you have more processors than programs to run on them.  If your web site is getting 100 hits at a time, and has 100 processors, this works- each processor deals with a single, unique transaction.  But if you have 200 processors and 100 hits, you have two choices- either use multiple processors per transaction, or simply not use half your processing power.  Since the number of threads are, more or less, doubling every generation, by ignoring half you threads it means your web site runs no faster on this generation of hardware than on last generation&#8217;s hardware.  And what happens next generation, when you&#8217;re handed 400 processors?</p>
<p>You can ignore this, for the moment.  Even single threaded, processors today provide a huge amount of computing power- esepcially compared to the bandwidth limitations of memory, disk, and internet access speeds.  And, if your programming language is slow enough to start with, you can provide huge leaps in performance simply by fixing your language.  But, sooner or later, multithreaded is going to happen.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mcclain</title>
		<link>http://enfranchisedmind.com/blog/2007/04/21/minnebar-conference-report/#comment-12580</link>
		<dc:creator>mcclain</dc:creator>
		<pubDate>Sun, 22 Apr 2007 04:32:06 +0000</pubDate>
		<guid isPermaLink="false">http://enfranchisedmind.com/blog/archive/2007/04/21/229#comment-12580</guid>
		<description>Get some sleep :)

I enjoyed the snippet of your presentation which I stuck around for, and really, the concept of pure functions as atoms of provable functionality (duh) has been stuck in my head since then. 

I'm still chewing on it, which I think means you did enough to get your merit badge in functional evangelism to the unwashed.

Please join the unwashed masses interested in functional programming at lambda@ruby.mn

Thanks again for the presentation.</description>
		<content:encoded><![CDATA[<p>Get some sleep :)</p>
<p>I enjoyed the snippet of your presentation which I stuck around for, and really, the concept of pure functions as atoms of provable functionality (duh) has been stuck in my head since then. </p>
<p>I&#8217;m still chewing on it, which I think means you did enough to get your merit badge in functional evangelism to the unwashed.</p>
<p>Please join the unwashed masses interested in functional programming at <a href="mailto:lambda@ruby.mn">lambda@ruby.mn</a></p>
<p>Thanks again for the presentation.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
