<?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"
	>

<channel>
	<title>davepeck.org</title>
	<atom:link href="http://davepeck.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://davepeck.org</link>
	<description>atomcraft &#60;span class="ampersand"&#62;&#38;&#60;/span&#62; atomcraft accessories</description>
	<pubDate>Sat, 03 Jan 2009 01:16:17 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<item>
		<title>(Mega) Mall Rat</title>
		<link>http://davepeck.org/2009/01/02/mega-mall-rat/</link>
		<comments>http://davepeck.org/2009/01/02/mega-mall-rat/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 23:03:10 +0000</pubDate>
		<dc:creator>Dave Peck</dc:creator>
		
		<category><![CDATA[blog]]></category>

		<category><![CDATA[family]]></category>

		<category><![CDATA[friends]]></category>

		<category><![CDATA[malls]]></category>

		<category><![CDATA[rants]]></category>

		<guid isPermaLink="false">http://davepeck.org/?p=388</guid>
		<description><![CDATA[It was cold and bleak in Minnesota. What to do with two small children, extended family visiting from disparate points, and temperatures hovering around -10 Fahrenheit?
Mall Of America, of course!
I will admit to spending not one, not two, but three full days at the mall. I walked all three levels in both directions. The perimeter is approximately [...]]]></description>
			<content:encoded><![CDATA[<p>It was cold and bleak in Minnesota. What to do with two small children, extended family visiting from disparate points, and temperatures hovering around -10 Fahrenheit?</p>
<p><a title="NEVER AGAIN." href="http://www.mallofamerica.com/">Mall Of America</a>, of course!</p>
<p>I will admit to spending not one, not two, but three full days at the mall. I walked all three levels in both directions. The perimeter is approximately 6/10 of a mile, so I managed to get a minor (if culturally and hypsometrically flat) &#8220;hike&#8221; in during my visits. </p>
<p>Fun and wet: riding the <a title="Apparently Andy (my three-year-old-nephew) decided he wanted off about 30 seconds after the ride started..." href="http://en.wikipedia.org/wiki/Paul_Bunyan's_Log_Chute">log chute</a> in the amusement park. Fun and pricey: <a title="Could have also flown an F/A-18 but who wants jets when you can fly the P38 Lightning?" href="http://flyaces.com/">full-motion WWII dogfighting</a> against my brother.</p>
<p>I have my limits, though. I will probably not want to set foot in another mall until, say, Christmas 2012. Mayans, beware.</p>
]]></content:encoded>
			<wfw:commentRss>http://davepeck.org/2009/01/02/mega-mall-rat/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Outdenting Code In Emacs On OSX</title>
		<link>http://davepeck.org/2008/12/23/outdenting-code-in-emacs-on-osx/</link>
		<comments>http://davepeck.org/2008/12/23/outdenting-code-in-emacs-on-osx/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 03:23:46 +0000</pubDate>
		<dc:creator>Dave Peck</dc:creator>
		
		<category><![CDATA[blog]]></category>

		<category><![CDATA[emacs]]></category>

		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://davepeck.org/?p=368</guid>
		<description><![CDATA[When flirting with TextMate, I got used to using normal-person keyboard shortcuts for indenting (⌘-]) and outdenting (⌘-[) blocks of code. 
Emacs scoffs at normal people.
In emacs, every language mode has its own peculiar notion of indentation. To make it possible to bind keys to indentation functions, indent-according-to-mode was introduced. This function looks for a [...]]]></description>
			<content:encoded><![CDATA[<p>When flirting with TextMate, I got used to using normal-person keyboard shortcuts for indenting (<code>⌘-]</code>) and outdenting (<code>⌘-[</code>) blocks of code. </p>
<p>Emacs scoffs at normal people.</p>
<p>In emacs, every language mode has its own peculiar notion of indentation. To make it possible to bind keys to indentation functions, <code>indent-according-to-mode</code> was introduced. This function looks for a buffer-local variable called <code>indent-line-function</code> and invokes it if found. Major mode authors know to point <code>indent-line-function</code> to their mode-specific indentation code.</p>
<p>At first blush, whoever built this mechanism appears to have neglected the equally important &#8220;outdent&#8221; feature. It&#8217;s not a surprise, though. Historically, in the world of emacs, mode-specific indent has been closer to &#8220;format this code nicely&#8221; than to &#8220;insert spaces or tabs.&#8221; Of course, we now have popular whitespace-dependent languages (Python) and markups (YAML) for which code formatting is less useful.</p>
<p><span id="more-368"></span></p>
<p>It&#8217;s certainly possible to hook the modes you use and manually set indent/outdent bindings for each. But I wanted to find a solution that worked independent of any specific major mode. Luckily, there&#8217;s a &#8220;convention&#8221; (of sorts) in the land of major modes. For the modes where it matters, it appears that <code>C-c &lt;</code> gets bound to the mode-specific outdent function. So a simple bit of elisp is all we need to get <code>⌘-[</code> working. It&#8217;s a hack, yes, and hopefully someone will point out a better way:</p>
<pre>
(define-key osx-key-mode-map (kbd "A-[")
  (lambda () (interactive)
    (call-interactively (key-binding (kbd "C-c <")))))
</pre>
<p>Of course, you&#8217;ll have to pick the keymap appropriate for your specific emacs build. The above works for AquaMacs; for Carbon emacs, use <code>mac-key-mode-map</code> instead.</p>
<p>One last issue: this hack doesn&#8217;t do much if there is no underlying binding for <code>C-c &lt;</code>. It might be useful to do something mode-agnostic in that case.</p>
]]></content:encoded>
			<wfw:commentRss>http://davepeck.org/2008/12/23/outdenting-code-in-emacs-on-osx/feed/</wfw:commentRss>
		</item>
		<item>
		<title>ExpanDrive Is Nifty</title>
		<link>http://davepeck.org/2008/12/18/expandrive-is-nifty/</link>
		<comments>http://davepeck.org/2008/12/18/expandrive-is-nifty/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 19:04:33 +0000</pubDate>
		<dc:creator>Dave Peck</dc:creator>
		
		<category><![CDATA[blog]]></category>

		<category><![CDATA[expandrive]]></category>

		<category><![CDATA[osx]]></category>

		<category><![CDATA[rants]]></category>

		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://davepeck.org/?p=360</guid>
		<description><![CDATA[
Like most developers who do web stuff, I sometimes need to edit files on a remote server. It turns out that this is a pain in the patookus. Or, at least, it was.
After the thirty day trial, I gave in to the power of ExpanDrive. Those thirty days convinced me that $40 was well worth the price [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>Like most developers who do web stuff, I sometimes need to edit files on a remote server. It turns out that this is a pain in the patookus. Or, at least, it was.</p>
<p>After the thirty day trial, I gave in to the power of <a title="Rock on, Magnetik LLC" href="http://www.expandrive.com/expandrive">ExpanDrive</a>. Those thirty days convinced me that $40 was well worth the price of admission. It&#8217;s nifty to be able to mount your remote filesystems via SSH as if they were just network disks.</p>
<p>And yes, before I spent my bucks, I carefully evaluated using emacs <a title="Slow and strange with the file naming syntax." href="http://www.emacswiki.org/cgi-bin/wiki/TrampMode">tramp-mode</a>, remote emacs via terminal, <a title="Nice name, and pretty decent software too." href="http://cyberduck.ch/">CyberDuck</a>, <a title="I don't know why people love this app so much. The interface is really broken, at least for my use case." href="http://www.panic.com/transmit/">Transmit</a>, <a title="AWESOME." href="http://code.google.com/p/macfuse/">MacFuse</a> with SSHFS, and <a title="The best open-source alternative, but of course it uses SSHFS which can be slow." href="http://www.macfusionapp.org/">MacFusion</a>. I even looked at improving my source control policies and using <a title="Poorly documented junkware, in my opinion. STAY AWAY." href="http://www.capify.org/">Capistrano</a> (yuck!) or <a title="A promising start but suffers hugely from NO DOCUMENTATION and inability to invoke &quot;recursively&quot; across hosts." href="http://www.nongnu.org/fab/">Fabric</a> (too immature!)</p>
<p>ExpanDrive is based on MacFuse, but <em>not</em> SSHFS; this makes all the difference. Whatever caching magic they do makes ExpanDrive <em>scream</em> when working with lots of small files in nested directories. Perhaps the SSHFS folks will catch up sometime soon, but at the moment the distance between the two is vast enough to justify the cost.</p>
<p>And I can&#8217;t wait for ExpanDrive&#8217;s planned S3 disk feature. Hot!</p></div>
]]></content:encoded>
			<wfw:commentRss>http://davepeck.org/2008/12/18/expandrive-is-nifty/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Tech Book Nostalgia</title>
		<link>http://davepeck.org/2008/12/16/tech-book-nostalgia/</link>
		<comments>http://davepeck.org/2008/12/16/tech-book-nostalgia/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 18:53:54 +0000</pubDate>
		<dc:creator>Dave Peck</dc:creator>
		
		<category><![CDATA[blog]]></category>

		<category><![CDATA[books]]></category>

		<category><![CDATA[dave mark]]></category>

		<category><![CDATA[iphone]]></category>

		<category><![CDATA[rants]]></category>

		<guid isPermaLink="false">http://davepeck.org/?p=353</guid>
		<description><![CDATA[The Commodore 64 Programmer&#8217;s Reference Guide was probably the first programming book I ever made extensive use of. I ran into a copy at Powell&#8217;s Books in Portland the last time I was there. If you ever have a chance to check out their tech book shop, they&#8217;ve got some sweet old computers on display, [...]]]></description>
			<content:encoded><![CDATA[<p>The <a title="6502 FTW!" href="http://project64.c64.org/hw/c64.html">Commodore 64 Programmer&#8217;s Reference Guide</a> was probably the first programming book I ever made extensive use of. I ran into a copy at <a title="Simply put, the most mind-bogglingly large bookstore you will ever see." href="http://www.powells.com/">Powell&#8217;s Books</a> in Portland the last time I was there. If you ever have a chance to check out their tech book shop, they&#8217;ve got some sweet old computers on display, including an <a title="The beast that started it all." href="http://upload.wikimedia.org/wikipedia/en/c/cb/Popular_Electronics_Cover_Jan_1975.jpg">Altair</a>, <a title="Clever managerial programs always lead to doomed companies. " href="http://www.imsai.net/">IMSAI</a>, and a <a title="Cute." href="http://en.wikipedia.org/wiki/Commodore_PET">PET</a>. It&#8217;s a good way to waste a lot of time.</p>
<p>Back when I was in middle and high school, I did a lot of programming on the Mac. That&#8217;s back in the System 6 era! <a title="Dave's company." href="http://www.spiderworks.com/">Dave Mark</a>&#8217;s books, especially <em>Macintosh Pascal Programming Primer</em> and (later) <em>Learn C On The Macintosh</em> still sit on a bookshelf in my family&#8217;s house. The spines on my copies are so broken it&#8217;s a wonder they haven&#8217;t fallen apart.</p>
<p>Browsing the bookshelves at the local Barnes <span class="ampersand">&amp;</span> Noble, I was excited to discover that Dave Mark is still at it. I picked up <a title="Citrus covers, really?" href="http://www.amazon.com/Beginning-iPhone-Development-Exploring-SDK/dp/1430216263">Beginning iPhone Development</a> based on his name alone. While I&#8217;ve already done a fairly extensive amount of iPhone and Cocoa programming, Mark&#8217;s book doesn&#8217;t disappoint. It&#8217;s a solid and easygoing introduction to the platform. It doesn&#8217;t hit everything &#8212; it&#8217;s surprisingly silent on networking &#8212; but the topics it does cover leave little to be desired. If you&#8217;re thinking about getting in the iPhone game, it&#8217;s a good book to pick up.</p>
]]></content:encoded>
			<wfw:commentRss>http://davepeck.org/2008/12/16/tech-book-nostalgia/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Meditations On Microsoft</title>
		<link>http://davepeck.org/2008/12/12/meditations-on-microsoft/</link>
		<comments>http://davepeck.org/2008/12/12/meditations-on-microsoft/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 23:02:12 +0000</pubDate>
		<dc:creator>Dave Peck</dc:creator>
		
		<category><![CDATA[blog]]></category>

		<category><![CDATA[microsoft]]></category>

		<category><![CDATA[rants]]></category>

		<guid isPermaLink="false">http://davepeck.org/?p=224</guid>
		<description><![CDATA[So: after six and a half years as a full-time engineer, I left Microsoft.
I left to pursue life and career goals that didn&#8217;t fit well under the Microsoft umbrella. I missed and wanted to return to the world of startups and of self-directed effort. Which is to say, I think I left for the right [...]]]></description>
			<content:encoded><![CDATA[<p>So: after six and a half years as a full-time engineer, I left Microsoft.</p>
<p>I left to pursue life and career goals that didn&#8217;t fit well under the Microsoft umbrella. I missed and wanted to return to the world of startups and of self-directed effort. Which is to say, I think I left for the right reasons.</p>
<p>There was, however, a contributing factor &#8212; a &#8220;wrong&#8221; reason &#8212; that helped push me out the door. In my last year of employment, I harbored a vague suspicion that Microsoft was broken at a deep institutional level. Since leaving, I&#8217;ve encountered several &#8220;red flags&#8221; that help confirm my suspicion. These flags make the shareholder in me more than a twinge nervous.</p>
<p><span id="more-224"></span></p>
<h3>From Where I Sat</h3>
<p>Inside, Microsoft looks like bubbling chaos. There are endless new incubations attempting to breathe life into the next great idea. In theory, this isn&#8217;t such a bad organizational scheme. It&#8217;s inherently Darwinian: the best teams bubble the best products up to the top; everyone benefits. </p>
<p>The reality, however, is that few of these teams end up building marketplace-successful technology. The key to any Darwinian system is its fitness function. It seems that Microsoft never explicitly designed its own incubation incentives; rather, as the company grew, a set of incentives &#8212; the wrong ones &#8212; arose without conscious effort.</p>
<h3>The Gorilla At Work</h3>
<p>In order for Microsoft to pursue a new opportunity, it has to be large. Launching hundreds of $10M businesses or even a handful of $100M businesses is not interesting. To propose an incubation, executives and engineers must think big. They must shoot for the moon. </p>
<p>But it&#8217;s here that the institution&#8217;s incentives are very broken. Executives and their teams are rewarded for the <em>pitch</em>; they&#8217;re rewarded for a compelling mile-high description of their moonshot. Later on, they&#8217;re rewarded for providing demos that show they aren&#8217;t standing still. Teams are <em>not</em>, however, rewarded for quickly finding customers who need the technology. They&#8217;re not rewarded for explaining the pragmatic benefits of their technology; abstractions and generalized reasoning hold sway. Most importantly, teams are not rewarded for picking a <em>small, tractable corner</em> of their vision to pursue concretely and to completion. </p>
<p>As a result of these poorly designed incentives, Microsoft is full of incubations at sail with no port in sight. And it&#8217;s easy to see the outcome play out in the broader marketplace.</p>
<h3>Who Builds For The Builders?</h3>
<p>Speaking with startups in the Seattle area, I&#8217;ve noticed a recurring trend: when choosing tools, startups rarely look at the Microsoft platform. It&#8217;s not that startup engineers harbor a grudge. Rather, Microsoft simply isn&#8217;t on their radar screen. And if Microsoft <em>does</em> appear, it&#8217;s often as a blip in the distance &#8212; too vague an object to warrant careful attention.</p>
<p>There&#8217;s a deeper issue: the majority of startups I&#8217;ve spoken with have technical problems for which Microsoft is silent. Seattle startups need tools to help write embedded software, design and deploy distributed algorithms, and scale-out complex CRUD web sites. It turns out that open-source efforts like <a title="Number of seattle startups currently using Hadoop: MANY." href="http://hadoop.apache.org/core/">Hadoop</a> and <a title="Run by Squid Leader, one of Seattle's finest laptop battlers?" href="http://www.squid-cache.org/">Squid</a>, along with cloud computing platforms like <a title="Did you think I meant &quot;American Welding Society&quot;?" href="http://aws.amazon.com/">AWS</a> and specialized hosts like <a title="To name one of many examples... though one I've seen used quite often out here in Seattle." href="http://www.engineyard.com/">Engine Yard</a>, are the best games in town.</p>
<p>Microsoft loses out in a big way when it misses these key platform pieces. But no bulls-eye is no surprise given how its incentives are structured.</p>
<h3>Sing The High Notes, Ignore The Low?</h3>
<p>When and if customers finally <em>do</em> see the results of Microsoft&#8217;s labors, there is often a lot of head-scratching. At this year&#8217;s Professional Developers Conference, Microsoft unveiled two major initiatives: <a href="http://www.microsoft.com/azure/default.mspx">Windows Azure</a> and <a href="http://www.microsoft.com/soa/products/oslo.aspx">Microsoft Oslo</a>. Speaking with developers, my sense is that the value behind both of these launches could not have been less clear. This is tragic: there is some great technology lurking under the hood, if only it were easy to look.</p>
<p>Azure is a collection of all sorts of cloud-related ideas, only a few of which are likely to be important in practice. Trimming the fat wasn&#8217;t an option for the Azure team and so Microsoft&#8217;s potential customers have to wade through a pile of muck to find their diamonds. And there <em>are</em> diamonds to be found: the &#8220;web and worker&#8221; architecture, coupled with tight tool integration, potentially makes Azure the most appealing of the <a title="In which I like to myself." href="http://davepeck.org/2008/11/30/the-clouds-spectrum/">big three cloud services</a>.</p>
<p>The Oslo initiative is similarly baffling. The Oslo team has thought deeply about how to represent and tool models. But there is scant evidence of pragmatic thinking about <em>how</em> models actually improve developers’ lives. As a result, Oslo allows developers to define models (in the sense of defining structures) but provides no runtime platform to access and manipulate them. Meanwhile, it&#8217;s simple to both define and manipulate models in platforms like Rails and Django. Once again, Oslo has some buried gems: parts of &#8220;M&#8221; are genuine game-changers for those in the business of designing languages and tools for languages. And &#8220;IntelliPad&#8221; is going to rock when it ships.</p>
<h3>Even Gorillas Can Be Ignored</h3>
<p>The upshot of all of this, I think, is that in many circumstances it&#8217;s simply easiest to ignore Microsoft. Wading through complex and poorly structured documentation takes time that startups are loathe to spend. Wading through poorly conceived and messily encumbered APIs takes longer and costs more.</p>
<p>Before I left Microsoft, there were encouraging signs that employees were aware of these problems. But changing institutional structure is not easy; there is too much at stake for employees under the current incentives.</p>
<p>I love my friends and colleagues from Microsoft. I had the opportunity to work with truly brilliant engineers, architects, communicators, and visionaries. I had the opportunity to work with lots of fun and energetic people. But in the end, I found fault with the institution we found ourselves in. I hope that Microsoft can see its way through these current problems and move onward to future greatness.</p>
]]></content:encoded>
			<wfw:commentRss>http://davepeck.org/2008/12/12/meditations-on-microsoft/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Beta Means Beta</title>
		<link>http://davepeck.org/2008/12/11/beta-means-beta/</link>
		<comments>http://davepeck.org/2008/12/11/beta-means-beta/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 03:45:15 +0000</pubDate>
		<dc:creator>Dave Peck</dc:creator>
		
		<category><![CDATA[blog]]></category>

		<category><![CDATA[appengine]]></category>

		<category><![CDATA[cloud computing]]></category>

		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://davepeck.org/?p=283</guid>
		<description><![CDATA[The term &#8220;beta&#8221; is so overused that it has nearly lost its meaning. Sometimes, however, it still means &#8220;warning, ye who enter here.&#8221;
Late last week my client&#8217;s datastore indexes were corrupted. The failure was demonstrably AppEngine&#8217;s. Attempts to manually rebuild indexes failed. The AppEngine team has been working for several days to resolve the problem, which [...]]]></description>
			<content:encoded><![CDATA[<p>The term &#8220;beta&#8221; is so overused that it has <em>nearly</em> lost its meaning. Sometimes, however, it still means &#8220;warning, ye who enter here.&#8221;</p>
<p>Late last week my client&#8217;s datastore indexes were corrupted. The failure was demonstrably AppEngine&#8217;s. Attempts to manually rebuild indexes failed. The AppEngine team has been working for several days to resolve the problem, which we appreciate.</p>
<p>But such failures are disheartening when you&#8217;re busy signing up paid customers.</p>
]]></content:encoded>
			<wfw:commentRss>http://davepeck.org/2008/12/11/beta-means-beta/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Updated iPhone Artwork Tool</title>
		<link>http://davepeck.org/2008/12/07/updated-iphone-artwork-tool/</link>
		<comments>http://davepeck.org/2008/12/07/updated-iphone-artwork-tool/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 07:45:50 +0000</pubDate>
		<dc:creator>Dave Peck</dc:creator>
		
		<category><![CDATA[blog]]></category>

		<category><![CDATA[artwork]]></category>

		<category><![CDATA[iphone]]></category>

		<category><![CDATA[tool]]></category>

		<category><![CDATA[utilities]]></category>

		<guid isPermaLink="false">http://davepeck.org/?p=237</guid>
		<description><![CDATA[I&#8217;ve added support for the iPhone 2.2 OS to my iPhone Artwork Tool. I built the tool to help me with a very specific iPhone development task, but it seems that it&#8217;s also useful to the iPhone modding community. So&#8230; enjoy!
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve added support for the iPhone 2.2 OS to my <a title="Awesome for hax0rs and non-hax0rs alike." href="http://davepeck.org/iphone-artwork-tool/">iPhone Artwork Tool</a>. I built the tool to help me with a very specific iPhone development task, but it seems that it&#8217;s also useful to the iPhone modding community. So&#8230; enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://davepeck.org/2008/12/07/updated-iphone-artwork-tool/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Memory Wall</title>
		<link>http://davepeck.org/2008/12/07/the-memory-wall/</link>
		<comments>http://davepeck.org/2008/12/07/the-memory-wall/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 01:02:38 +0000</pubDate>
		<dc:creator>Dave Peck</dc:creator>
		
		<category><![CDATA[blog]]></category>

		<category><![CDATA[intel]]></category>

		<category><![CDATA[manycore]]></category>

		<category><![CDATA[rants]]></category>

		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://davepeck.org/?p=210</guid>
		<description><![CDATA[Ars Technica has an interesting article on the &#8220;memory wall&#8221; that lies in the path of many-core glory:
Eight cores is the point where the memory wall causes a fall-off in performance on certain types of science and engineering workloads.
I&#8217;m sure we&#8217;ll surmount this obstacle, but the solution might not come from Intel. A few months [...]]]></description>
			<content:encoded><![CDATA[<p>Ars Technica has an interesting <a title="When an unstoppable force (such as INTC's stock price) meets an immovable object..." href="http://arstechnica.com/news.ars/post/20081207-analysis-more-than-16-cores-may-well-be-pointless.html">article on the &#8220;memory wall&#8221;</a> that lies in the path of many-core glory:</p>
<blockquote><p>Eight cores is the point where the memory wall causes a fall-off in performance on certain types of science and engineering workloads.</p></blockquote>
<p>I&#8217;m sure we&#8217;ll surmount this obstacle, but the solution might not come from Intel. A few months ago, I attended a talk given by a senior Intel engineer where he described the many-core future as inevitable. He said nothing, however, about future memory architectures and was unable even to speculate when asked. Intel&#8217;s public road-map is silent on the problem, too.</p>
]]></content:encoded>
			<wfw:commentRss>http://davepeck.org/2008/12/07/the-memory-wall/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Cloud&#8217;s Dark Lining</title>
		<link>http://davepeck.org/2008/12/03/the-clouds-dark-lining/</link>
		<comments>http://davepeck.org/2008/12/03/the-clouds-dark-lining/#comments</comments>
		<pubDate>Wed, 03 Dec 2008 23:04:00 +0000</pubDate>
		<dc:creator>Dave Peck</dc:creator>
		
		<category><![CDATA[blog]]></category>

		<category><![CDATA[amazon]]></category>

		<category><![CDATA[appengine]]></category>

		<category><![CDATA[aws]]></category>

		<category><![CDATA[azure]]></category>

		<category><![CDATA[cloud computing]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[microsoft]]></category>

		<guid isPermaLink="false">http://davepeck.org/?p=182</guid>
		<description><![CDATA[It&#8217;s not all wine and roses in the world of utility computing. There are dark corners and hidden &#8220;gotchas&#8221; lurking behind each of the &#8220;big three&#8221; (AWS, AppEngine, and Azure) services. Here are a few things to consider before using utility computing in your next project:
Real-World Readiness. Of the three providers, only Amazon is out [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s not all wine and roses in the world of utility computing. There are dark corners and hidden &#8220;gotchas&#8221; lurking behind each of the &#8220;big three&#8221; (<a title="A supercomputer geek's wet dream?" href="http://aws.amazon.com/">AWS</a>, <a title="Still pretty good for CRUD, despite caveats below." href="http://appengine.google.com/">AppEngine</a>, and <a title="One day Microsoft will catch up. Until now, it's confusing." href="http://www.microsoft.com/azure/">Azure</a>) services. Here are a few things to consider before using utility computing in your next project:</p>
<p><strong>Real-World Readiness</strong>. Of the three providers, only Amazon is out of beta, and only Amazon is actively supporting real customers at large scales across <em>all</em> of the services they offer. The AppEngine <a title="If you're writing an appengine app, definitely add this to your subscription list." href="http://googleappengine.blogspot.com/">team</a> and <a title="Also, check out the appengine IRC channel. Lots of actual google developers lurk there and respond to problems/questions." href="http://groups.google.com/group/google-appengine/">community</a> are extremely responsive, and Google has published their <a title="The road goes ever on and on, down from the door where it began." href="http://code.google.com/appengine/docs/roadmap.html">post-beta road map</a>, but major pieces still in progress &#8212; such as support for a second language &#8212; may disrupt their intended timeline. And Azure, of course, is barely open for public experimentation at the moment. It will be a year or two before Azure is a reasonable choice for deployment; expect significant growing pains and changes in that time.</p>
<p><strong>Service-Level Agreements.</strong> Or, more specifically, lack thereof. Amazon is ahead of the curve with their <a title="SLA: not just a three letter acronym when you've got concerned customers knocking at YOUR door." href="http://aws.amazon.com/s3-sla/">S3</a> and <a title="We guarantee we'll charge you, no matter how borked up the rest of our infrastructure may be." href="http://aws.amazon.com/ec2-sla/">EC2</a> SLAs; as a result, AWS is the only business-friendly cloud platform out there. AppEngine <a title="(But, in the beta period, uptime hasn't been half-bad.)" href="http://blogs.zdnet.com/SAAS/?p=489">makes no guarantees about uptime</a>, and in the beta period it is clear that Google is willing to tweak their services in ways that can <a title="This (and two related incidents) were not fun for a lot of their users, including yours truly." href="http://groups.google.com/group/google-appengine-downtime-notify/browse_thread/thread/77cfc8980acd6873">break running applications</a> for minutes to hours at a time. There seems to be a lot of skepticism in the community about Microsoft&#8217;s ability to deliver meaningful up-times, but I think this is hogwash. Microsoft has plenty of experience maintaining data centers &#8212; though, of course, we shouldn&#8217;t expect Azure SLAs for another year or two.</p>
<p><strong>Cost Structure</strong>. Google&#8217;s <a title="But once you pass the freemium threshold, things get more expensive than corresponding AWS rates." href="http://www.google.com/intl/en/press/annc/20080527_google_io.html">&#8220;freemium&#8221; pricing</a> is free to an impressive degree. I&#8217;ve written an application for AppEngine that I expect will be quite popular &#8212; but never popular enough to cost me even a penny. Those are powerful economics! Once you&#8217;ve passed the &#8220;freemium&#8221; threshold, however, AppEngine looks slightly more expensive than Amazon. Of course, <a title="A handy calculator for you and yours." href="http://calculator.s3.amazonaws.com/calc5.html">Amazon charges</a> the moment you start experimenting with their services; this may be cost-prohibitive for small and independent developers. Microsoft hasn&#8217;t yet announced pricing, so you develop on their infrastructure at your future economic peril.</p>
<p>There is one pricing issue specific to AppEngine that has yet to be resolved. The AppEngine team appears to have no firm answer on how they intend to meter CPU usage and on <a title="This will probably get resolved before they go public." href="http://groups.google.com/group/google-appengine/browse_thread/thread/5005094a60c365ef/7360c070dace09d0?lnk=gst&amp;q=monitoring+CPU#7360c070dace09d0">what, specifically, constitutes a high-CPU request</a>. I expect more clarity on this by the time AppEngine exits beta.</p>
<p><strong>No Scalability For Free</strong>. With AWS, and to some extent with Azure, the developer must manage scalability by hand. This can be a complex task and there is no silver bullet. AppEngine takes a different approach. By substantially narrowing the type of application that can be built, Google can transparently scale based on demand. Even this &#8220;scalability&#8221; isn&#8217;t free, however. Applications that perform a high percentage of writes but are not properly engineered will fall down under the weight of even ten queries per second. Application code can retry writes if they fail, but often the only correct action is to quickly return an error code to your users. In my experience, working through AppEngine datastore contention issues can be very time-consuming. Good load testing is essential.</p>
<p><strong>Byzantine APIs</strong>. Amazon is especially guilty of building APIs that are far more complex than necessary. It simply isn&#8217;t possible to &#8220;hit the ground running&#8221; with Amazon&#8217;s more interesting services such as EC2 and EBS. And once you walk up the learning curve for one AWS API, you have to start all over with another. Some of Amazon&#8217;s APIs are query-based; some are REST; some are a combination thereof. The documentation is thorough but hard to make day-to-day use of.</p>
<p><strong>Woeful Documentation</strong>. Microsoft has done an abysmal job explaining their new Azure platform to developers and businesses alike. After the PDC, it seems that most developers were left scratching their heads. The Azure web site lists <a title="Oh, Microsoft, when will you learn how to speak plainly about your intent?" href="http://www.microsoft.com/azure/default.mspx">&#8220;getting started&#8221; options</a> for &#8220;web,&#8221; &#8220;corporate,&#8221; &#8220;ISV,&#8221; &#8220;system integration,&#8221; and &#8220;business&#8221; developers. Deciding which category you belong to is left as an exercise (in frustration) for the reader. Digging deeper, the most useful overview of Azure turns out to be a <a title="Useful, but why is this necessary?" href="http://www.microsoft.com/azure/whitepaper.mspx">sixty-page white paper</a> that reveals most of the Azure initiative (Live Mesh, SQL Cloud Services) to be essentially uninteresting. And once you start to use the service, you have to navigate a torturous web UI that makes a disaster out of even simple tasks like DNS configuration.</p>
]]></content:encoded>
			<wfw:commentRss>http://davepeck.org/2008/12/03/the-clouds-dark-lining/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Cloud&#8217;s Spectrum</title>
		<link>http://davepeck.org/2008/11/30/the-clouds-spectrum/</link>
		<comments>http://davepeck.org/2008/11/30/the-clouds-spectrum/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 03:25:31 +0000</pubDate>
		<dc:creator>Dave Peck</dc:creator>
		
		<category><![CDATA[blog]]></category>

		<category><![CDATA[amazon]]></category>

		<category><![CDATA[appengine]]></category>

		<category><![CDATA[aws]]></category>

		<category><![CDATA[azure]]></category>

		<category><![CDATA[cloud computing]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[microsoft]]></category>

		<guid isPermaLink="false">http://davepeck.org/?p=171</guid>
		<description><![CDATA[While it&#8217;s too early to count anyone out, it seems safe to say that Google, Amazon, and Microsoft are the current &#8220;big three&#8221; of utility computing. All three offer access to vast computing resources with pay-as-you-go pricing &#8212; but that&#8217;s where the similarities end.
Google&#8217;s AppEngine offers worry-free scalability for a very narrow (but useful) set [...]]]></description>
			<content:encoded><![CDATA[<p>While it&#8217;s too early to count anyone out, it seems safe to say that Google, Amazon, and Microsoft are the current &#8220;big three&#8221; of utility computing. All three offer access to vast computing resources with pay-as-you-go pricing &#8212; but that&#8217;s where the similarities end.</p>
<p><strong><a title="Google AppEngine: Badass for CRUD" href="http://appengine.google.com/">Google&#8217;s AppEngine</a></strong> offers worry-free scalability for a very narrow (but useful) set of problems. Your application must be driven strictly by requests to public-facing URLs. The application must render responses in a few seconds; compute-intensive tasks are not an option. AppEngine offers no work-queue and no asynchronous APIs; background processing is therefore not possible. As your application&#8217;s load increases, Google automatically allocates new CPUs to the task. This means that scalability is fully transparent to the developer.</p>
<p><strong>AppEngine bottom line:</strong> If your application is a read-mostly CRUD application, Google&#8217;s AppEngine can scale you to hundreds of queries per second with little or no engineering effort on your part&#8230; and little or no financial outlay. Oh, and you&#8217;d better be happy with Python.</p>
<p><strong><a title="A few weeks ago, I had a nightmare that I spooled up several thousand EC2 instances and then left for Tahiti without shutting them down." href="http://aws.amazon.com/">Amazon&#8217;s Web Services</a></strong> lie at the opposite end of the spectrum. Amazon has &#8220;componentized&#8221; the infrastructure that sits behind most scalable web sites. From block devices to message queues to full virtual PC instances, you can choose just the parts you need to satisfy your application&#8217;s hardware, networking, and storage requirements. Of course, all of this flexibility comes at the cost of making you the system administrator. And unlike AppEngine, you don&#8217;t get scalability for free: if you need more machines to scale your application, you&#8217;ll need to request them yourself and your code will have to determine how best to utilize the new resources.</p>
<p><strong>AWS bottom line:</strong> Amazon offers maximal flexibility and is ideal if your task doesn&#8217;t hit another cloud provider&#8217;s sweet spot. If you have specialized needs, are capable of hand-rolling scalable code, or are happy acting as a system administrator, AWS is your ticket to utility computing glory.</p>
<p><strong><a title="Microsoft did the worst imaginable job communicating Azure to their developers at the PDC. It's embarrassing how much time it took to understand their offering. That's too bad, because it seems to me that Microsoft may have built the service with the most common &quot;sweet spot&quot; for developers." href="http://www.microsoft.com/azure/default.mspx">Microsoft&#8217;s Azure</a></strong>, newly announced, sits somewhere between Google and Amazon. Azure allows you to deploy two distinct types of code into the data center. <em>Web Roles </em>are request-driven applications whose restrictions look very similar to AppEngine&#8217;s restrictions. <em>Worker Roles</em> are arbitrary, and potentially long-running, pieces of code. Microsoft provides several mechanisms for web and worker roles to communicate and share state, including message queues, a DHT-like datastore similar to AppEngine&#8217;s, and a quasi-relational datastore based on a variant of SQL Server. Like AppEngine, web roles can scale transparently if desired, but the developer also has the option of manual control. Worker roles are of course fully managed by the developer.</p>
<p><strong>Azure bottom line:</strong> It&#8217;s too soon to tell, but if you want to build a compute-intensive application or need background processing &#8212; and you don&#8217;t want to play system administrator &#8212; Azure may be the ideal choice. If you choose to use Visual Studio for your development, Azure also delivers the best overall debug and deploy experience of the three services. At the moment, you must develop in a .NET language; C# appears to be preferred.</p>
]]></content:encoded>
			<wfw:commentRss>http://davepeck.org/2008/11/30/the-clouds-spectrum/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
