<?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>Tim Berglund &#187; Publication</title>
	<atom:link href="http://www.augusttechgroup.com/tim/blog/category/publication/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.augusttechgroup.com/tim/blog</link>
	<description></description>
	<lastBuildDate>Fri, 27 May 2011 18:26:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>You have 1,000 Cores. Go.</title>
		<link>http://www.augusttechgroup.com/tim/blog/2010/11/23/you-have-1000-cores-go/</link>
		<comments>http://www.augusttechgroup.com/tim/blog/2010/11/23/you-have-1000-cores-go/#comments</comments>
		<pubDate>Tue, 23 Nov 2010 16:38:15 +0000</pubDate>
		<dc:creator>tlberglund</dc:creator>
				<category><![CDATA[Publication]]></category>
		<category><![CDATA[Trends]]></category>
		<category><![CDATA[clojure]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[hickey]]></category>
		<category><![CDATA[immutable]]></category>
		<category><![CDATA[intel]]></category>
		<category><![CDATA[multicore]]></category>
		<category><![CDATA[neward]]></category>
		<category><![CDATA[subramaniam]]></category>

		<guid isPermaLink="false">http://www.augusttechgroup.com/tim/blog/?p=253</guid>
		<description><![CDATA[Intel is talking about a radically scalable processor design that can do 48 cores today, and lots more tomorrow. The architecture for the Intel 48-core Single Chip Cloud Computer (SCC) processor is &#8220;arbitrarily scalable,&#8221; said Intel researcher Timothy Mattson, during a talk at the Supercomputer 2010 conference being held this week in New Orleans. &#8220;This [...]]]></description>
			<content:encoded><![CDATA[<p>Intel is talking about a <a href="http://www.goodgearguide.com.au/article/368762/intel_1_000-core_processor_possible/">radically scalable processor design</a> that can do 48 cores today, and lots more tomorrow.</p>
<blockquote><p>The architecture for the Intel 48-core Single Chip Cloud Computer (SCC) processor is &#8220;arbitrarily scalable,&#8221; said Intel researcher Timothy Mattson, during a talk at the Supercomputer 2010 conference being held this week in New Orleans.</p>
<p>&#8220;This is an architecture that could, in principle, scale to 1,000 cores,&#8221; he said. &#8221; I can just keep adding, adding, adding cores.&#8221;</p>
<p>&#8230;</p>
<p>For simplicity&#8217;s sake, the team used an off-the-shelf 1994-era Pentium processor design for the cores themselves. &#8220;Performance on this chip is not interesting,&#8221; Mattson said. It uses a standard x86 instruction set.
</p></blockquote>
<p>And so the message of the <a href="http://www.agiledeveloper.com/aboutus.html">prophets</a> of <a href="http://www.tedneward.com/about.aspx">functional</a> <a href="http://en.wikipedia.org/wiki/Rich_Hickey">programming</a> is ratified in part. It&#8217;s been a meme in the past several years that radically multicore processors were coming, and that the received models of concurrent programming were unlikely to do a good job utilizing the new hardware. That hardware would be slower (or at best no faster) per processor, but would instead grow the number of  processors to deliver more computing power over time. And now that radical multicore is appearing, what of the claim that threading and synchronized mutable data is a dead letter? Well, ask a hardware guy:</p>
<blockquote><p>
As more cores are added to chips, [cache coherency] becomes problematic insofar as &#8220;the protocol overhead per core grows with the number of cores, leading to a &#8216;coherency wall&#8217; beyond which the overhead exceeds the value of adding cores,&#8221; the paper accompanying [Intel researcher Timothy] Mattson&#8217;s talk noted.</p>
<p>Mattson has argued that a better approach would be to eliminate cache coherency and instead allow cores to pass messages among one another.
</p></blockquote>
<p>Interesting that hardware designers have made the same discovery that we have: to wit, that managing concurrent access to mutable state is simply not possible at scale. We often make the argument as a cognitive one—that programmers simply can&#8217;t reason effectively about heavily threaded and synchronized code—but there turns out to be a performance boundary as well.</p>
<p>A 1,000-core part is an automatic win if you&#8217;re writing server software whose unit of work is a computationally mundane request. You parse some text, you do some disk or socket I/O, you sort some lists, you process strings into an output buffer, and nobody gets hurt. But if your computational task is less mundane and actually requires thoughtful coordination of computing resources that doesn&#8217;t delegate well to infrastructure like an app server, then trying to manage mutable state by hand will wreck you on the same rocks as Intel&#8217;s hardware designers.</p>
<p>Which is not to endorse, say, actors over STM, simply because the hardware in question looks more like one than the other. But it is to say that the prophets of mutability doom are not to be ignored, and you should probably start <a href="http://refcardz.dzone.com/refcardz/functional-programming-clojure">learning new languages</a> as if you believed them.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.augusttechgroup.com/tim/blog/2010/11/23/you-have-1000-cores-go/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Writing Software With the Grain</title>
		<link>http://www.augusttechgroup.com/tim/blog/2008/09/16/writing-software-with-the-grain/</link>
		<comments>http://www.augusttechgroup.com/tim/blog/2008/09/16/writing-software-with-the-grain/#comments</comments>
		<pubDate>Tue, 16 Sep 2008 16:16:30 +0000</pubDate>
		<dc:creator>tlberglund</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Publication]]></category>

		<guid isPermaLink="false">http://www.augusttechgroup.com/tim/blog/?p=12</guid>
		<description><![CDATA[My JavaWorld article, <a title="JavaWorld Article" href="http://www.javaworld.com/javaworld/jw-09-2008/jw-09-humanity-of-agile.html?page=1">Writing Software With the Grain: Exploring the Humanity of Agile Methods</a>, is up! The article explores several common Agile practices—to wit: user stories, lightweight documentation, and iterations—that happen to align well with normal human behavior given the kinds of creatures that we are.]]></description>
			<content:encoded><![CDATA[<p>My JavaWorld article, <a title="JavaWorld Article" href="http://www.javaworld.com/javaworld/jw-09-2008/jw-09-humanity-of-agile.html?page=1">Writing Software With the Grain: Exploring the Humanity of Agile Methods</a>, is up! This is my first publication in anything bigger than a blog.* Dorky as it is, I&#8217;m pretty pumped!</p>
<p>The article explores several common Agile practices—to wit: user stories, lightweight documentation, and iterations—that happen to align well with normal human behavior given the kinds of creatures that we are. There is, you might be thinking, a host of philosophical assumptions that underlie this sort of reasoning, which I would be only too pleased to discuss over drinks sometime if you&#8217;re local.</p>
<p>I had to pick a limited number of Agile practices for analysis in the article, but I think there is more to the story than the three I&#8217;ve identified. A good example would be Extreme Programming&#8217;s Sustainable Pace. The opposite of Sustainable Pace is the discipline of death-marching developers just hard enough that they don&#8217;t quit, but hard enough that we squeeze maximum productivity out of them. If developers were impersonal units of software production akin to machines, this would be the right way to manage them.</p>
<p>The most obvious objection to this is the law of diminishing returns, or the idea that each marginal hour worked is an increasingly fatigued, and correspondingly less productive, hour. While there is certainly some truth to this, I think we&#8217;re forced to grant that we actually do make more progress when we work more hours. Everybody knows crunch time, and every honest developer is forced to admit that the crazy schedule of the final push to the finish actually make a difference—at least up until the time the hallucinations start, which in itself can be kind of fun, as long as it&#8217;s your coworkers doing the hallucinating.</p>
<p>The best objection to overwork isn&#8217;t a utilitarian one; rather, I would argue that the notion of Sustainable Pace is grounded in the right relationship between work and the other activities in human life given the kinds of creatures that human beings are. It is good and right for us to spend a certain amount of our time following some kind of economically productive vocation out in the commonwealth. It is also good and right for us to spend some amount of time with friends or family, some amount of time sleeping and eating, some amount of time standing in line at the DMV, some amount of time inside, some amount of time out-of-doors, etc. For most people, work might take up a plurality of the pie, but it should not be a significant majority. It is in our nature to spend our time in a variety of roles activities, of which work is but one part.</p>
<p>&#8220;The Humanity of Sustainable Pace&#8221; could definitely use a more detailed treatment than I&#8217;ve given it here, but my point is to illustrate that there is more to the topic than my article covers. I&#8217;d love to see the community do some more thinking along these lines. The trick is to realize that human beings are a particular kind of thing—we implement a common base class, if you will—so the practices and methods we develop in our vocation should respect that class&#8217;s semantics. The notion that we are uniform production units that can be squeezed into whatever organizational structure and management schema we choose is destructive not just to the ontology of the human person, but also to the well-being of the people on our teams—people who may well be our friends, and people whose healthy vocational context is certainly our responsibility.</p>
<p>So let&#8217;s think some more along these lines. Agile is doing great things, and hopefully more great ideas can follow from it.</p>
<hr />*This is technically untrue. In sixth grade, I wrote to the middle-school science magazine <em>Current Science</em> with a proposed design for a perpetual motion machine, which was in essensce a really, <em>really</em> efficient electrical generator. They redrew my diagram and published it, asking the readers if they thought it would run forever. Widsom of the crowd, baby! Except in this case, perhaps not.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.augusttechgroup.com/tim/blog/2008/09/16/writing-software-with-the-grain/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.561 seconds -->

