<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.therealadam.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:series="http://unfoldingneurons.com/" version="2.0">

<channel>
	<title>The Real Adam</title>
	
	<link>http://therealadam.com</link>
	<description>Polymath practicing programming, probably procrastinating</description>
	<lastBuildDate>Mon, 26 Jul 2010 16:44:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.therealadam.com/TheRealAdam" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="therealadam" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Making the complicated seem simple</title>
		<link>http://therealadam.com/archive/2010/07/26/making-the-complicated-seem-simple/</link>
		<comments>http://therealadam.com/archive/2010/07/26/making-the-complicated-seem-simple/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 16:44:52 +0000</pubDate>
		<dc:creator>Adam Keys</dc:creator>
				<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://therealadam.com/?p=1690</guid>
		<description><![CDATA[Wherein simplicity is not what is actually sought <a href="http://therealadam.com/archive/2010/07/26/making-the-complicated-seem-simple/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Don Norman, <a href="http://www.jnd.org/dn.mss/simplicity_is_not_the_answer.html" title="Don Norman's jnd.org / Simplicity Is Not the Answer">Simplicity Is Not the&nbsp;Answer</a>:</p>

<blockquote>
  <p>We want devices that do a lot, but that do not confuse, do not lead to frustration. Ahah! This is not about simplicity: it is about frustration. The entire debate is being framed incorrectly. Features is not the same as capability. Simplicity is not the same as usability. Simplicity is not the&nbsp;answer.</p>
</blockquote>

<p>Norman goes on to explain how you can take a confusing mass of features and turn it into something less&nbsp;frustrating:</p>

<ul>
<li>Modularize into understandable&nbsp;clusters</li>
<li>Map clearly from actions to&nbsp;results</li>
<li>Model the ideas and actions&nbsp;cohesively</li>
</ul>

<p>The article is about interaction design, but it fits just as well in designing programming languages and&nbsp;software.</p><img src="http://feeds.feedburner.com/~r/TheRealAdam/~4/F86vRxQ7eTE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://therealadam.com/archive/2010/07/26/making-the-complicated-seem-simple/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Form: follow your influences</title>
		<link>http://therealadam.com/archive/2010/07/14/form-follow-your-influences/</link>
		<comments>http://therealadam.com/archive/2010/07/14/form-follow-your-influences/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 21:08:33 +0000</pubDate>
		<dc:creator>Adam Keys</dc:creator>
				<category><![CDATA[Expanded ideas]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://therealadam.com/?p=1668</guid>
		<description><![CDATA[Wherein I share some inspiration and pat some fellas on the shoulder <a href="http://therealadam.com/archive/2010/07/14/form-follow-your-influences/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Now that I&#8217;ve sort of ranted about tinkering with software and how it is less important than writing, let&#8217;s talk about&nbsp;form.</p>
<p>I&#8217;ve found new energy in writing here of late. Part of that, I think, comes from thinking about a handful of weblogs that I really enjoy and figuring out how to emulate them on my own terms. What I find most intriguing and energizing to study is the framework within each author&nbsp;writes.</p>
<p><a href="http://shawnblanc.net/">Shawn Blanc</a> is a tasteful writer and curator. His site brings me interesting insight into design, aesthetic, and interface. I like his even-handed mix of original and linked content, his in-depth pieces, and his dedication to words over imagery. You can tell I&#8217;m thinking of Shawn when I write lengthy pieces examining an idea from all sides or when I post shorter links with a few sentences on how the linked article fits into a larger idea or aesthetic I find&nbsp;intriguing.</p>
<p><a href="http://www.tbray.org/ongoing/">Tim Bray</a> has his hands on many of the technologies and ideas I use on a regular basis. On his own weblog, he often goes off into the weeds of an idea, documenting an intellectual journey of trying to understand a topic that is new or interesting to him. I don&#8217;t always agree, and even find some of his stuff boring, but love it when he grabs hold of an idea and works on it. You can tell when I&#8217;m wearing my Tim hat (not literally) when I write a serial, a bunch of posts tied together by some idea, trying to figure out where the idea leads and how it fits into the bigger picture of an intellectual&nbsp;journey.</p>
<p><a href="http://kottke.org/">Jason Kottke</a> is sort of the original gangster of curation. He is at his best and prolific when he is pulling together ideas, finding the unique and wonderful stuff. But more importantly, his erudition puts a lot of ideas and topics together I don&#8217;t normally come across. Sometimes I post things that aren&#8217;t really on topic for this weblog, but I do so because I think they represent the &#8220;cult of personality&#8221; of what I find interesting or exciting; this is me playing the Jason Kottke&nbsp;card.</p>
<p><a href="http://rc3.org/">Rafe Coburn</a> is also a curator, but his topics-of-interest go a bit deeper, a little nerdier. Rafe&#8217;s at his strongest when he&#8217;s pulling together ideas about psychology, economics, science, and history. He uses these ideas to explain the political and technological world we live in. He does so in an opinionated way, but one I find easy to read and non-offensive, even when I disagree with him. I&#8217;ve yet to master his tone and the skill by which he brings ideas together, but if you see me posting on topics that are a little boring on their surface, its me trying to make sense of the world in the way that Rafe&nbsp;does.</p>
<p><a href="http://interconnected.org/home/">Matt Webb</a> is the island and the bridges between thinkers, dreamers, and makers. For years, I&#8217;ve followed his work, delighting in how he brings science, futurism, technology, and materials into wonderful and contemporary ideas. Even better, in <a href="http://berglondon.com/">his company&#8217;s recent work</a>, he makes these futuristic ideas <em>happen. </em>Should you ever find me wandering into oddly disparate ideas, trying to pull them together into something wonderful, it&#8217;s likely I&#8217;m doing my own faint impersonation of Mr.&nbsp;Webb.</p>
<p>So that&#8217;s who I&#8217;m influenced the most by lately. The writers whose form, style, and excellence I strive to emulate, whose work I most enjoy. Yours are probably different. But the formula is the same: figure out whose work you aspire to the most, write a post about why you admire their work, and then get to work living up to the bar you&#8217;ve&nbsp;set.</p><img src="http://feeds.feedburner.com/~r/TheRealAdam/~4/vZwlTX6qbUU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://therealadam.com/archive/2010/07/14/form-follow-your-influences/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adam’s guide to switching weblogs</title>
		<link>http://therealadam.com/archive/2010/07/12/adams-guide-to-switching-weblogs/</link>
		<comments>http://therealadam.com/archive/2010/07/12/adams-guide-to-switching-weblogs/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 20:12:59 +0000</pubDate>
		<dc:creator>Adam Keys</dc:creator>
				<category><![CDATA[Expanded ideas]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://therealadam.com/?p=1664</guid>
		<description><![CDATA[Wherein I encourage you to write, not rejigger <a href="http://therealadam.com/archive/2010/07/12/adams-guide-to-switching-weblogs/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Over the past few years of writing on this weblog, I can&#8217;t tell you how many times I&#8217;ve convinced myself that now is the time to move my stuff to new software. Oh, the shiny and wondrous things that must be on that grass that is so much greener on the other side. This, despite having written at least once before on <a href="http://therealadam.com/archive/2007/10/20/rejiggering-meets-build-versus-buy/">whether one should implement their own blogging&nbsp;app</a>.</p>
<p>Consider this my yearly devotion to not rejiggering&nbsp;things.</p>
<p><strong><span class="caps"><span class="caps"><span class="caps">WHEN</span> <span class="caps">SHOULD</span></span></span> I <span class="caps"><span class="caps"><span class="caps">REWRITE</span></span></span>/<span class="caps">SWITCH</span>/<span class="caps">REDESIGN</span> <span class="caps">MY</span> <span class="caps"><span class="caps"><span class="caps">WEBLOG</span>, <span class="caps">ADAM</span></span></span>?</strong></p>
<p>If your weblog software is so broken you can&#8217;t post, get some new software that you can post to and port all your old content to it, taking care to preserve links and such (so much as possible; don&#8217;t worry about boiling the&nbsp;ocean).</p>
<p>If you make your monies blogging, follow your needs; actually you should largely disregard anything I&nbsp;say.</p>
<p>If you&#8217;re a designer by trade, I&#8217;ll allow that it&#8217;s often good for your cred to pop a hot new design a couple times a year; just make sure that only one in ten of your posts are about your fresh new&nbsp;redesign.</p>
<p><span class="caps"><span class="caps"><strong><span class="caps"><span class="caps"><span class="caps">ADAM</span>, <span class="caps">YOU</span> <span class="caps">HAVENT</span> <span class="caps">MENTIONED</span></span></span></strong></span></span><strong> <span class="caps">ME</span> </strong><span class="caps"><span class="caps"><strong><span class="caps"><span class="caps"><span class="caps">YET</span>,</span></span></strong></span></span><strong> I&#8217;M </strong><span class="caps"><span class="caps"><strong><span class="caps"><span class="caps"><span class="caps">CONFUSED</span>.</span></span></strong></span></span></p>
<p>I&#8217;m getting to&nbsp;you!</p>
<ul>
<li>If you&#8217;re a writer, <span class="caps"><span class="caps">just<em>&nbsp;<span class="caps">WRITE</span></em></span></span></li>
<li>If you&#8217;re a coder, <span class="caps"><span class="caps">just<em>&nbsp;<span class="caps">CODE</span></em></span></span></li>
</ul>
<p><span class="caps"><span class="caps"><strong><span class="caps"><span class="caps"><span class="caps">BUT</span> <span class="caps">BUT</span> <span class="caps">BUT</span></span></span></strong></span></span><strong>!!!!!!!</strong></p>
<p>No, really. The important thing about a weblog is that you put your ideas and experiences down in writing. You work through your thoughts. You put them out there for people to ignore, criticize, or&nbsp;praise.</p>
<p>You may have a lovely thing where you post links, images, funny videos, etc. <a href="http://therealadam.com/archive/2007/10/20/rejiggering-meets-build-versus-buy/">Great, me too!</a> But I&#8217;m not talking about that. I&#8217;m talking about banging two hundred words or more together into a cohesive, intriguing&nbsp;idea.</p>
<p><span class="caps"><span class="caps"><strong><span class="caps"><span class="caps"><span class="caps">MAKE</span> <span class="caps">WORDS</span>, <span class="caps">NOT</span> <span class="caps">MARGINALLY</span> <span class="caps">USEFUL</span> <span class="caps">SOFTWARE</span>&nbsp;<span class="caps">SHUFFLING</span>.</span></span></strong></span></span></p><img src="http://feeds.feedburner.com/~r/TheRealAdam/~4/yTIya79ndNY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://therealadam.com/archive/2010/07/12/adams-guide-to-switching-weblogs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Michael Feathers on how code grows</title>
		<link>http://therealadam.com/archive/2010/07/11/michael-feathers-on-how-code-grows/</link>
		<comments>http://therealadam.com/archive/2010/07/11/michael-feathers-on-how-code-grows/#comments</comments>
		<pubDate>Sun, 11 Jul 2010 19:53:36 +0000</pubDate>
		<dc:creator>Adam Keys</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Curated]]></category>
		<category><![CDATA[pragprog]]></category>

		<guid isPermaLink="false">http://therealadam.com/?p=1669</guid>
		<description><![CDATA[Wherein we think about how code evolves <a href="http://therealadam.com/archive/2010/07/11/michael-feathers-on-how-code-grows/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://michaelfeathers.typepad.com/michael_feathers_blog/2010/06/festering-code-bases-and-budding-code-bases.html">Festering Code Bases and Budding Code&nbsp;Bases</a>:</p>
<blockquote>Some teams produce what I call a festering code base. In a festering code base, the team changes the code primarily by adding code to existing methods and adding methods to existing classes. The results are predictable. Classes and methods grow malignantly, eventually becoming thousands of lines long.</blockquote>
<blockquote>Better teams produce budding code bases. Developers create new classes and methods and delegate work outward. Periodically, they collapse structure back into a simpler form, but the dominant trend is to grow the code by creating new structure.</blockquote>
<p>I&#8217;d never put much thought into <em>how </em>code bases grow in the past. Feathers has some interesting ideas here about the characteristics of good and not-so-good growth and how languages and tools might promote good&nbsp;growth.</p><img src="http://feeds.feedburner.com/~r/TheRealAdam/~4/QFfW96yWBv4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://therealadam.com/archive/2010/07/11/michael-feathers-on-how-code-grows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Incremental deployment at GitHub</title>
		<link>http://therealadam.com/archive/2010/07/08/incremental-deployment-at-github/</link>
		<comments>http://therealadam.com/archive/2010/07/08/incremental-deployment-at-github/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 15:18:30 +0000</pubDate>
		<dc:creator>Adam Keys</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Curated]]></category>
		<category><![CDATA[deployment]]></category>

		<guid isPermaLink="false">http://therealadam.com/?p=1672</guid>
		<description><![CDATA[Wherein not everyone gets their cookies at the same time. <a href="http://therealadam.com/archive/2010/07/08/incremental-deployment-at-github/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Over the past year, I&#8217;ve read a lot about how teams are deploying their software. I&#8217;ve known for a while that Google has the ability to roll out new code to a small percentage of their servers and ramp up the breadth of deployment if they like how the software is&nbsp;behaving.</p>

<p>Lately, I&#8217;m starting to see more and more teams implement that sort of functionality. Rick Olson describes how GitHub implements it in <a href="http://github.com/blog/677-how-we-deploy-new-features">How we deploy new features</a>, and includes links to how Forrst and Flickr do it as well. At Velocity, Paul Hammond explained <a href="http://www.paulhammond.org/2010/06/trunk/">how to build an application-specific kind of version control into your&nbsp;app</a>.</p>

<p>I&#8217;m a little surprised that few libraries have emerged for managing this. It would seem that, given all the excitement about continuous deployment, automated rollbacks, and incremental rollouts, someone would come up with something that they think is neat enough to share. I suspect that in fact, this is a really ugly, deeply application-specific sort of thing, no one likes to look at how they do it, and that&#8217;s why there is plenty of <em>talk </em>about how to do it, but no libraries making it a simple&nbsp;thing.</p><img src="http://feeds.feedburner.com/~r/TheRealAdam/~4/MSutpbLRzFI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://therealadam.com/archive/2010/07/08/incremental-deployment-at-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Cadence and Flow of Editing Programs</title>
		<link>http://therealadam.com/archive/2010/06/28/the-cadence-and-flow-of-editing-programs/</link>
		<comments>http://therealadam.com/archive/2010/06/28/the-cadence-and-flow-of-editing-programs/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 02:28:06 +0000</pubDate>
		<dc:creator>Adam Keys</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[editors]]></category>

		<guid isPermaLink="false">http://therealadam.com/?p=1660</guid>
		<description><![CDATA[Wherein the sound of making programs is crucial <a href="http://therealadam.com/archive/2010/06/28/the-cadence-and-flow-of-editing-programs/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I figured out why my trists with other editors often end up back at TextMate. It sounds a bit like&nbsp;this:</p>

<p><em>Tap-tap-tap-tap-tap-tap; <span class="caps"><span class="caps">TAP</span></span>; tap-tap-tap-tap-tap-tap-tap-tap-tap-tap-tap-tap; <span class="caps"><span class="caps">TAP</span></span>; <span class="caps"><span class="caps">TAP</span></span>; tap-tap-tap-tap-tap-tap;&nbsp;<span class="caps"><span class="caps">TAP</span>.</span></em></p>

<p>When I&#8217;ve used vi and its descendants, it sounds like&nbsp;this:</p>

<p><em>Tap-tap-tap-tap-tap-tap; taptaptap; tap-tap-tap-tap-tap-tap; tapTAP <span class="caps"><span class="caps">TAP</span></span>! tap-tap-tap-tap-tap-tap-tap-tap-tap-tap-tap-tap-tap-tap-tap-tap-tap-tap. tapTAPTAPtapTAP <span class="caps"><span class="caps">TAP</span></span>!</em></p>

<p>And Emacs sounds like&nbsp;this:</p>

<p><em>Tap-tap-tap-tap-tap-tap; tapTAPtapTAP. tap-tap-tap-tap-tap-tap;tap-tap-tap-tap-tap-tap;tap-tap-tap-tap-tap-tap; tapTAP <span class="caps"><span class="caps">TAP</span></span>; <span class="caps"><span class="caps">TAP</span> <span class="caps">TAP</span></span>tapTAPtapTAPTAP.&nbsp;tapTAPtapTAP!</em></p>

<p>Lest you fear I&#8217;ve created some Ook-like language for describing shortcuts in any known editor, let me explain what&#8217;s going on&nbsp;here.</p>

<h2 id="cadence">Cadence</h2>

<p>Emacs is, at it&#8217;s core, a Lisp machine with a text editing language wrapped around it. Every interaction with Emacs invokes a function. Handily enough, the function that adds an &#8220;a&#8221; to the file you&#8217;re editing is bound to the <code>a</code> key on your keyboard. Oddly enough, the function that writes the file you&#8217;re editing out to disk is bound to the combination of hitting <code>control</code> and <code>x</code> at the same time, followed by <code>control</code> and <code>s</code> at the same time. Getting them out of order matters. <code>Control-s</code> followed by <code>Control-x</code> does something entirely&nbsp;different.</p>

<p>So when you use Emacs, you type a bit, and then you run some command. Maybe you save the file, or switch to editing another file, or go to peruse a directory. So you tap for a while and then you stop tapping, move your hands every so slightly to mash the control, or alt keys and then tap some other key, usually emphatically. The most commonly used key combinations end up being hit even more emphatically. Sit in a room full of developers using Emacs, listen closely; every once in a while, you&#8217;ll here everyone save almost simultaneously and go back to a furry of lower-case&nbsp;tapping. </p>

<p>Vi is slightly different from Emacs in that it is built up from two Unix commands: one for editing single lines of text, and another for moving between said lines of text. Thus, the cadence of a vi user is slightly different. Staccato taps followed by a bang as they switch from line editing to line navigation; more staccato taps, this time oddly spaced as they move between lines and place the cursor to begin their next fury of editing; another burst of staccato text entry; a quick and emphatic tap to take them out of editing mode and then a quick but punctuated trio of taps as they invoke the command that saves the file out, a sequence of finger movements so ingrained in the vi users brain that it appears as more of a gesture than a triplet of discrete key&nbsp;presses.</p>

<p>Here&#8217;s a project idea for pranksters: stand in a room full of people using vi and Emacs, listen for the really emphatic taps, and trip the room&#8217;s breaker right before they all finish their emphatic save commands. Cackle as chaos&nbsp;ensues.</p>

<h2 id="the_space_between_the_taps">The space between the&nbsp;taps</h2>

<p>A roomful of vi-users, Emacs-users, and TextMate users is a homogeneous mess of clackity-clackity to the untrained ear. Most accomplished programmers are touch typists, so what you&#8217;re likely to hear is an undifferentiated stream of rapid-fire tapping. But if you&#8217;ve used these editors enough, and wasted enough time thinking about the aesthetics they represent, you can hear the differences in the punctuation as commands are invoked by arcane combinations and sequences of&nbsp;keystrokes.</p>

<p>In Vi and Emacs, there is a concise sequence of keys you can mash to do a regular expression search, move down three lines, go to the second sentence on that line, and replace the word under the cursor with &#8220;bad-ass text editing programmer, do not offend&#8221;. It is, in part, this power that attracts, fascinates, and empowers their&nbsp;users.</p>

<p>TextMate can do this, sure. But there is very little in the way of support from the editor to do it. You mostly have to put your eye on the piece of text you wish to edit and use some primitive motion keystrokes to get the cursor where you want it. Then you use those same keystrokes to highlight the text to replace, this time holding down a modifier key, then you type in the text you want. TextMate, compared to its programmers editor brethren, is a language of grunts and chuffs next to the sophisticated Latin or French of vi and&nbsp;Emacs.</p>

<h2 id="flow">Flow</h2>

<p>TextMate is unsophisticated next to the extensibility and conceptual unity of Emacs, or the pure practicality of vim. So why do I keep coming back to&nbsp;it?</p>

<p>It keeps me in&nbsp;flow.</p>

<p>This is a very personal answer. I&#8217;m not saying you can&#8217;t achieve a flow-state with vi or Emacs. I&#8217;m saying that while I like the idea of those editors, understand the aesthetic, and enjoy watching skilled operators using them, I get lost in the punctuation when I use them. I either forget what punctuation I should use in some text editing scenario, or I have a nagging doubt that there is some <em>better</em> punctuation I could be using&nbsp;instead.</p>

<p>If vi is about navigating lines and editing those lines; Emacs is about invoking Lisp functions on files containing text, then TextMate is about primitive but direct manipulation of the text in a file. There&#8217;s very little conceptual overhead. You don&#8217;t need to know how the editor is enhanced in order to understand how to operate it. You don&#8217;t need to know when to put yourself in different modes of operation to make things happen. You just think of what you want the text to look like, you move the cursor around and you type on the&nbsp;keyboard.</p>

<p>It ain&#8217;t much, but I (often) call it&nbsp;home.</p><img src="http://feeds.feedburner.com/~r/TheRealAdam/~4/u4vJcADNN04" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://therealadam.com/archive/2010/06/28/the-cadence-and-flow-of-editing-programs/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Breaking My Habits For Editing Programs</title>
		<link>http://therealadam.com/archive/2010/06/22/breaking-my-habits-for-editing-programs/</link>
		<comments>http://therealadam.com/archive/2010/06/22/breaking-my-habits-for-editing-programs/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 02:16:35 +0000</pubDate>
		<dc:creator>Adam Keys</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[editors]]></category>

		<guid isPermaLink="false">http://therealadam.com/?p=1658</guid>
		<description><![CDATA[Wherein I try something completely different <a href="http://therealadam.com/archive/2010/06/22/breaking-my-habits-for-editing-programs/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a Unix guy, by upbringing. My first formative experiences in software development were on an early, Linux 1.x version of Debian. I&#8217;d used Windows, but always came back to Linux. When <span class="caps">OS</span> X got good enough around 10.2, I switched to something that didn&#8217;t require so much tinkering, so I could make more useful&nbsp;stuff.</p>

<p>Software development on Unix has skewed towards focusing on tools, languages, and text editors for quite some time. <span class="caps"><span class="caps">IDE</span></span>s and browsers on Unix are a messy, foreign thing (just like everything else in Unix). Thus, I&#8217;ve long favored the terminal-and-editor style of&nbsp;development.</p>

<p>I&#8217;ve decided that now is the time for me to try something different. I like text editors and directly manipulating text, but I can see why some people feel naked without an <span class="caps"><span class="caps">IDE</span>.</span> The ability to pop-up a level and make a more broad-stroked transformation to a program is appealing. Having code navigation and semantic awareness baked in has lots of&nbsp;potential.</p>

<p>I&#8217;ve probably said grumbly things about <a href="http://www.jetbrains.com/ruby/index.html">RubyMine</a> in the past, but I think now is the time to give it a go. Worst thing that could happen is that I don&#8217;t like it and I go back to the infinite tinkering of Emacs or the 85% perfect experience of&nbsp;TextMate.</p>

<p>I&#8217;ll let you know how it&nbsp;goes.</p>

<p><hr /></p>

<p>I originally wrote that a few months ago, at the apex of my editor&nbsp;neurosis. </p>

<p>I did give RubyMine a try, and I like some parts of it. It&#8217;s code navigation is pretty nice, it does an admirable job of integrating with the unique ecosystem of tools that a Ruby developer uses to manage their environment, and it does an excellent job of grokking <span class="caps"><span class="caps">TDD</span> </span>with test/unit and RSpec. RubyMine is a step in the right direction. I suspect that if I had muscle memory for IntelliJ, it would be the way to&nbsp;go.</p>

<p>But, I have muscle memory for TextMate and Emacs, and I have an affinity for being close to my tools. RubyMine felt one step disconnected from both my muscle memory and my tools. That&#8217;s quite an accomplishment; most <span class="caps"><span class="caps">IDE</span></span>s feel several steps removed the tools and seem to discourage developing finger-memory in favor of menu-memory. I&#8217;ll give RubyMine another try in a year, probably, see how it&#8217;s coming along. But in the mean time, it&#8217;s great to see that there is a vendor out there tackling the challenge that is tools for&nbsp;Ruby.</p><img src="http://feeds.feedburner.com/~r/TheRealAdam/~4/lIORHAWipiw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://therealadam.com/archive/2010/06/22/breaking-my-habits-for-editing-programs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A rambling, regurgitated thought on process</title>
		<link>http://therealadam.com/archive/2010/06/16/a-rambling-regurgitated-thought-on-process/</link>
		<comments>http://therealadam.com/archive/2010/06/16/a-rambling-regurgitated-thought-on-process/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 13:35:08 +0000</pubDate>
		<dc:creator>Adam Keys</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[pragprog]]></category>

		<guid isPermaLink="false">http://therealadam.com/?p=1362</guid>
		<description><![CDATA[Wherein I probably restate countless individuals <a href="http://therealadam.com/archive/2010/06/16/a-rambling-regurgitated-thought-on-process/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Elevator pitch: I&#8217;ve found that if you want to divert a productive team into an hour or two of semi-fruitless banter, ask how the team should use Git, Pivotal Tracker, and Capistrano to manage incoming work, verify it, and deploy it to production. In reality, you should ignore all the corner-cases and figure out what will enable you to push really small chunks of work with great&nbsp;frequency.</p>

<p><em>Ed. What follows isn&#8217;t novel, but it was a useful change in perspective for me, so I decided to&nbsp;share.</em></p>

<p>I&#8217;ve been thinking a bit about software processes lately. Despite great variation in telling you <em>how</em> to do so, most processes seem to focus on to do more stuff&nbsp;faster.</p>

<p>Lately, the notion of doing less has a lot of interest. <a href="http://www.startuplessonslearned.com/">Lean startups</a> are the new-new thing and <a href="http://gettingreal.37signals.com/">Getting Real</a> is the old new thing; both preach getting more done and delivering value by doing less and analyzing the results&nbsp;more.</p>

<p>There are two kinds of &#8220;do less&#8221; a software developer can engage in. In the past I&#8217;ve been a little too focused on how I can take on fewer responsibilities from other parties. Literally doing less by scoping down features, putting off decisions, and focusing on things that seem like they really matter. I sometimes feel like I&#8217;ve become too eager to do less, making myself something of a cranky coder/slacker. But I&nbsp;digress</p>

<p>Recently, I&#8217;ve been trying to tackle doing less in my habits of creating software. How can I write less code to implement a feature, not in the minimalist sense, but in the &#8220;how do I just get it to kinda work sense&#8221;? How can I take less time between starting something and getting some form of it out in the wild? How can I make my code less coupled so there are fewer changes to make when I decide it needs to do something else? How can I make this less coupled to data storage so that putting it out requires less deployment effort? How can I make changes that are less likely to cause long-term regressions? How can I make it less effort to rollback bad&nbsp;changes?</p>

<p>When I look through the lens of accomplishing more by doing less, a lot of popular software methodology seems like dead weight. Rather than trying to find a process that addresses every team member&#8217;s own scars and affections, both perceived and imaginary, it seems most useful to imagine the smallest ruleset that won&#8217;t result in uncontrollable entropy and put it into action. If something starts to hurt, imagine the simplest new rule and put it into&nbsp;play.</p>

<p>The goal, as stated above, is to get to the point where you make really tiny, maybe imperceptible changes, and push them really frequently. Everything that stands in the way is the&nbsp;enemy.</p><img src="http://feeds.feedburner.com/~r/TheRealAdam/~4/dXSH4Efau1Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://therealadam.com/archive/2010/06/16/a-rambling-regurgitated-thought-on-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rails’ Next Top Model</title>
		<link>http://therealadam.com/archive/2010/06/12/rails-next-top-model/</link>
		<comments>http://therealadam.com/archive/2010/06/12/rails-next-top-model/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 14:21:29 +0000</pubDate>
		<dc:creator>Adam Keys</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://therealadam.com/?p=1354</guid>
		<description><![CDATA[Wherein new parts of Rails are explained <a href="http://therealadam.com/archive/2010/06/12/rails-next-top-model/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Of all the new and reimagined code in Rails 3, ActiveModel and ActiveRelation rank amongst what I find the most interesting. I&#8217;m excited that they potentially lower the bar to implementing one&#8217;s own data layer. If you&#8217;ve got some custom backend or datastore, writing a nice <span class="caps"><span class="caps">API</span> </span>around it has previously been quite the endeavor. To get it working is one thing; to make it as pleasant to use for application programmers is another thing entirely. ActiveModel and ActiveRelation have been extracted from ActiveRecord and make the task of building one&#8217;s own model layer far&nbsp;easier.</p>

<p>My presentation for RailsConf 2010 focused on what ActiveModel and ActiveRelation provide and how one can use it to write cleaner code in domain models, how to make your models feel more like ActiveRecord objects, and how to use ActiveRelation to build your own persistence&nbsp;layers.</p>

<p>I hope you find the slides educational. Further, I&#8217;ve posted the examples on GitHub so you can play along at home. If you&#8217;re particularly interested in ActiveRelation, I hope you&#8217;ll <a href="http://github.com/therealadam/Presentations/tree/master/rails_next_top_model%2F">find the examples useful</a> as a starting point to using that&nbsp;library.</p>

<div style="width:425px" id="__ss_4478065"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/therealadam/rails-next-top-model" title="Rails&amp;#39; Next Top Model">Rails&#39; Next Top Model</a></strong><object id="__sse4478065" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=railsnexttopmodel-100611151635-phpapp02&amp;stripped_title=rails-next-top-model" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse4478065" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=railsnexttopmodel-100611151635-phpapp02&amp;stripped_title=rails-next-top-model" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object><div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/therealadam">Adam Keys</a>.</div></div><img src="http://feeds.feedburner.com/~r/TheRealAdam/~4/GMj1vw4qLfw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://therealadam.com/archive/2010/06/12/rails-next-top-model/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Make More Awesome</title>
		<link>http://therealadam.com/archive/2010/06/11/make-more-awesome/</link>
		<comments>http://therealadam.com/archive/2010/06/11/make-more-awesome/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 20:23:50 +0000</pubDate>
		<dc:creator>Adam Keys</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[creativitiy]]></category>
		<category><![CDATA[presentation]]></category>

		<guid isPermaLink="false">http://therealadam.com/?p=1352</guid>
		<description><![CDATA[Wherein the habits and tricks I use to make more interesting things are discussed <a href="http://therealadam.com/archive/2010/06/11/make-more-awesome/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Over the past year, I&#8217;ve been trying to create more stuff, some of which I&#8217;d hope to turn out awesome. Largely this is an ongoing sort of thing. I try things, I learn a little, I keep at it. Some things I try work, others don&#8217;t. I try to make a habit out of the things that have worked out well. I make a note of things that seem to help me get out of a funk when I&#8217;m not making as much as I&#8217;d like or having trouble putting in the hours I think are necessary to make cool&nbsp;stuff.</p>

<p>I first distilled these ideas into a talk I did at RubyConf 2009 on having more fun while coding. But I didn&#8217;t realize it at the time; I was just sharing some ideas about how to have fun. For me, one of the ways to have more fun is to make more time to have fun. But that&#8217;s just the beginning of making more awesome. I found I had to make more time, <em>and</em> develop a bunch of other&nbsp;habits.</p>

<p>For Big Design 2010, I honed the ideas, habits, and tricks I&#8217;ve found useful to me into a presentation on how to get off the couch, start making more things, and make some of those things awesome. I hope you&#8217;ll find it useful and perhaps start making lots of awesome&nbsp;stuff.</p>

<div style="width:425px" id="__ss_4478062"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/therealadam/make-moreawesome" title="Make More Awesome">Make More Awesome</a></strong><object id="__sse4478062" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=makemoreawesome-100611151624-phpapp01&amp;stripped_title=make-moreawesome" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse4478062" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=makemoreawesome-100611151624-phpapp01&amp;stripped_title=make-moreawesome" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object><div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/therealadam">Adam Keys</a>.</div></div><img src="http://feeds.feedburner.com/~r/TheRealAdam/~4/lcV5PudNFlc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://therealadam.com/archive/2010/06/11/make-more-awesome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic page generated in 1.730 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-07-26 10:45:00 -->
