<?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>stevengharms.com</title>
	<atom:link href="http://stevengharms.com/feed" rel="self" type="application/rss+xml" />
	<link>http://stevengharms.com</link>
	<description>My Blog</description>
	<lastBuildDate>Sat, 21 Apr 2012 19:06:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Use ack instead of grep to parse text files</title>
		<link>http://stevengharms.com/use-ack-instead-of-grep-to-parse-text-files</link>
		<comments>http://stevengharms.com/use-ack-instead-of-grep-to-parse-text-files#comments</comments>
		<pubDate>Tue, 10 Apr 2012 08:59:14 +0000</pubDate>
		<dc:creator>steven</dc:creator>
				<category><![CDATA[Technology and Computers]]></category>

		<guid isPermaLink="false">http://stevengharms.com/?p=2733</guid>
		<description><![CDATA[You know this guy? grep needle haystack &#124;grep special_needle or his inverted cousin: grep needle haystack &#124;grep -v unspecial_needle These are common staples of searching through text files. You should stop using them. Now. You can do much better by writing more consice regular expressions and using ack or one of its relatives (ack-grep, or [...]]]></description>
			<content:encoded><![CDATA[<p>You know this guy?</p>

<p><code>grep needle haystack |grep special_needle</code></p>

<p>or his inverted cousin:</p>

<p><code>grep needle haystack |grep -v unspecial_needle</code></p>

<p>These are common staples of searching through text files.</p>

<p>You should stop using them.  Now.</p>

<p>You can do much better by writing more consice regular expressions
and using <code>ack</code> or one of its relatives
(<a href="http://betterthangrep.com/">ack-grep</a>, or <code>rak</code>).</p>

<p>The primary virtue of these commands is that
they use the <a href="http://perldoc.perl.org/perlre.html">Perl regular expression
engine</a>.  Most programmers with experience in any of the major scripting languages will find this more comfortable than grep&#8217;s use of the GNU regex syntax.</p>

<p>I recently encountered a need to search through many files based on a complex regular expression that required lookahead and lookbehind asserions.  I have <strong>no idea</strong> how that would work in GNU regex land where, honestly, I <em>still</em> have a hard time getting simple capture and alternation. After learning look around syntax, I was glad to know that ack could directly implement it.</p>

<p>Given <code>haystack</code>, a text file:</p>

<pre><code>tin needle
silver needle
lead needle
ocelot
monkey
</code></pre>

<p>Find the needles (this is where most grep users get to and never leave):</p>

<pre><code>$ ack needle haystack
tin needle
silver needle
lead needle
</code></pre>

<p>Look at that  one character shorter than grep and just as easy.  Now if you want the <em>silver</em> needle, the unsophisticated, greppy way of doing this
would be:</p>

<pre><code>$ grep needle haystack|grep silver
silver needle
</code></pre>

<p>This sucks.  Try:</p>

<pre><code>$ ack '(?=silver).*needle' haystack
silver needle
</code></pre>

<p>Or, &#8220;all things in the haystack that are needles, but not the lead one&#8221;</p>

<pre><code>$ ack '^(?!^lead).*needle.*$' haystack
tin needle
silver needle
</code></pre>

<p>I know there&#8217;s a lot more to the power of the <a href="http://www.regular-expressions.info/lookaround.html">lookaround
assertion</a>, but if I can
re-train myself out of this habit I think it&#8217;ll be a big win.  Granted, for
smaller searches the &#8220;double-grep&#8221; method is probably fine, but any time you&#8217;re
doing a recursive descent and are looking for <em>true</em> needles in the haystack,
ack&#8217;s is the superior approach.</p>

<p>The case that I was working on was where I needed to search all my Rails models
for all named scopes that <strong>did not use</strong> the <code>lambda</code> form and I wanted five
lines of context around the matches so that I could be understand the behavior.</p>

<p><code>ack -C5 'scope(?!.*lambda)' app/models</code></p>

<p>That&#8217;s gold worth searching for.</p>
]]></content:encoded>
			<wfw:commentRss>http://stevengharms.com/use-ack-instead-of-grep-to-parse-text-files/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Rasperry Pi</title>
		<link>http://stevengharms.com/the-rasperry-pi</link>
		<comments>http://stevengharms.com/the-rasperry-pi#comments</comments>
		<pubDate>Fri, 06 Apr 2012 09:36:30 +0000</pubDate>
		<dc:creator>steven</dc:creator>
				<category><![CDATA[Technology and Computers]]></category>

		<guid isPermaLink="false">http://stevengharms.com/?p=2731</guid>
		<description><![CDATA[I heard about this at Golden Gate Ruby Conf this past year from Ron Evans (@deadprogram). It&#8217;s a low-power, low cost computer that can be used for lightweight media centers or &#8220;learn to program&#8221; desktops. I love the idea of these little machines lurking about hte house doing all sorts of automated stuff for us [...]]]></description>
			<content:encoded><![CDATA[<p>I heard about this at <a href="http://gogaruco.com/">Golden Gate Ruby Conf</a> this past
year from <a href="http://twitter.com/deadprogram">Ron Evans (@deadprogram)</a>.  It&#8217;s a
low-power, low cost computer that can be used for lightweight media centers or
&#8220;learn to program&#8221; desktops.</p>

<iframe width="560" height="315" src="http://www.youtube.com/embed/6BbufUp_HNs"
frameborder="0" allowfullscreen></iframe>

<p>I love the idea of these little machines lurking about hte house doing all
sorts of automated stuff for us behind our back.  While it&#8217;s clearly underpowered
to do advanced photo editing, most of our requirements for household computing (yet)
are fairly low power with frequent gap time.</p>
]]></content:encoded>
			<wfw:commentRss>http://stevengharms.com/the-rasperry-pi/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Use Vim&#8217;s Sessions to Defray Context-Switching Costs</title>
		<link>http://stevengharms.com/use-vims-sessions-to-defray-context-switching-costs</link>
		<comments>http://stevengharms.com/use-vims-sessions-to-defray-context-switching-costs#comments</comments>
		<pubDate>Mon, 26 Mar 2012 08:08:34 +0000</pubDate>
		<dc:creator>steven</dc:creator>
				<category><![CDATA[Technology and Computers]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://stevengharms.com/?p=2631</guid>
		<description><![CDATA[Introduction The Vim editor has a built-in function for preserving your editor state &#8212; which files you had open, which tabs they were in, etc. &#8212; called &#8220;Sessions.&#8221; In my experience, few Vim users, even experienced / advanced users, take advantage of this feature and that is a shame. Sessions allow you to get you [...]]]></description>
			<content:encoded><![CDATA[<h2>Introduction</h2>

<p>The Vim editor has a built-in function for preserving your editor state &mdash;
which files you had open, which tabs they were in, etc. &mdash; called
&#8220;<code>Sessions</code>.&#8221;  In my experience, few Vim users, even experienced / advanced
users, take advantage of this feature and that is a shame.  <code>Sessions</code> allow you
to get you <em>back</em> into the working context of a given problem <strong>immediately</strong> .
If you&#8217;ve avoided a needed reboot for software update or wished you could save
the context of your editing as related to a specific problem, you should take
the time to learn a little bit about <code>sessions.</code></p>

<h2>Curating an Editor State</h2>

<p>As developers, we generally start with a single file (&#8220;QA says there&#8217;s a bug in
this view&#8221;) and then realize it has a relationship with another file
(&#8220;Hm, but I need this as the data source / dependency / etc.&#8221;).  Over time we
come to recognize that there are several files whose relationship and
interaction creates a &#8220;feature&#8221; we want to work on.  I call this collection of
files that represents the means to the solution the &#8220;curated list.&#8221;  We groom
our curated list into a user interface that helps us address the problem:</p>

<p><a target="_new"
href="http://stevengharms.com/wp-content/uploads/2012/04/curated-list.png"><img
class="centered"
src="http://stevengharms.com/wp-content/uploads/2012/04/curated-list.png"
alt="#"></a></p>

<p><strong>The curated list for this blog post</strong></p>

<p>Finding yourself needing to reboot, where you would wipe away this solution
context like some <a href="http://en.wikipedia.org/wiki/Sand_mandala">Tibetan sand
mandala</a> might put you into a panic
routine:</p>

<blockquote>
  <p>&#8220;Which files do I have open?  Which directories am I in, which server processes
  are running?&#8221;</p>
</blockquote>

<p><a href="http://theoatmeal.com/">The Oatmeal</a> comic hits home:</p>

<p><a target="_new"
href="http://stevengharms.com/wp-content/uploads/2012/04/oatmeal-updates-dailylie.jpg"><img
class="centered"
src="http://stevengharms.com/wp-content/uploads/2012/04/oatmeal-updates-dailylie.jpg"
alt="#"></a></p>

<p>To save your state all you need to do is run <code>:mksession</code>.  By default this will
create a file called <code>Session.vim</code> in your working directory.  Its contents are
a full list of Vimscript commands that will be issued when you launch Vim with a
reference to that file with <code>vim -S session_file_name</code> at a later date.  Reading
this file is also a great way to learn some powerful Vimscript commands.</p>

<p><a target="_new"
href="http://stevengharms.com/wp-content/uploads/2012/04/session-file.png"><img
class="centered"
src="http://stevengharms.com/wp-content/uploads/2012/04/session-file.png"
alt="#"></a></p>

<p><em>The commands it requires to re-build your Vim session as it is right now</em></p>

<p>Standard Vim file-write semantics still apply  To overwrite the old session it&#8217;s
<code>:mksession!</code> and <code>:mksession session-from-after-lunch.vim</code>  It is this latter
usage which allows you to create &#8216;topic based sessions.&#8217;</p>

<h2>Topic-Based Vim Sessions</h2>

<p>The average Vim session is very small (kilobytes) and they can be made cheaply
(less than a second) therefore, as I work on problems I&#8217;ve taken to creating
multiple Vim sessions so that I can address a feature <em>and come back to it</em>
painlessly.</p>

<p>Presently I&#8217;m experimenting on creating sessions based on bug-tracker stories.
The session files (ending in <code>.vim</code>) are included in my global <code>.gitignore</code>
file.  Given that a certain feature may be revisited at any point, it seems a
good idea to keep each in its own session so that I can pick it back up again
for subsequent bugs / improvements.  <strong>AND</strong> should a refactor add a new file or
drop one, all that&#8217;s required is a simple <code>mkession!</code> to write a new session.</p>

<h2>Gotchas</h2>

<p>By default <code>mksession</code> saves <code>blank, buffers, curdir, folds, help, options,
tabpages, winsize</code>.  Depending on how heavily customized your Vim configuration
is, you may find these session commands clashing with your default options.  For
a heavily customized Vim installation (like <a href="https://github.com/carlhuda/janus">Janus
Vim</a>) this can create some erratic results.
To prevent any clashes, I have modified the default <code>sessionoptions</code>
configuration in my <code>.vimrc</code> to be the following:</p>

<p>&#8221; Sessions in Janus are overwrought
set sessionoptions=blank,buffers,curdir,folds,help,tabpages,winsize</p>

<h2>Reference</h2>

<p>As <code>sessionoptions</code> seems to suggest, there are a wide variety of things that
can be preserved.  <code>:help sessionoptions</code> and <code>:help mksession</code> in the on-line
Vim help guide should help you tweak your configuration to perfection.</p>

<p>I can even seen an argument for adding a <code>:mksession!</code> as an autocommand, so
that your session is written on every file-write or buffer-change event.  I
don&#8217;t (yet) see a need for that, but it&#8217;s great to know that Vim has that
capability.</p>

<h2>Conclusion</h2>

<p>With OSX Lion now preserving open application state, browswers now allowing you
to save tab state, and Vim now allowing you to preserve buffer state, you can
live in less fear of a power outage, an accidental reboot, or a <a href="https://discussions.apple.com/thread/2650623?start=0&amp;tstart=0">gray screen of
death</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://stevengharms.com/use-vims-sessions-to-defray-context-switching-costs/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trip to Yosemite</title>
		<link>http://stevengharms.com/trip-to-yosemite</link>
		<comments>http://stevengharms.com/trip-to-yosemite#comments</comments>
		<pubDate>Sat, 24 Mar 2012 22:53:57 +0000</pubDate>
		<dc:creator>steven</dc:creator>
				<category><![CDATA[Travelogue]]></category>

		<guid isPermaLink="false">http://stevengharms.com/?p=2612</guid>
		<description><![CDATA[Last weeekend Lauren and a few other friends went up to Yosemite to do some late winter camping. In our three days there we saw rain, big fluffy snowflakes, and spent a bit of time hiding out in our tent-cabin. It was a great, albeit chilly and, at times, wet experience. But for vistas like [...]]]></description>
			<content:encoded><![CDATA[<p>Last weeekend Lauren and a few other friends went up to
<a href="http://www.nps.gov/yose/">Yosemite</a> to do some late winter camping.  In our
three days there we saw rain, big fluffy snowflakes, and spent a bit of time
hiding out in our tent-cabin.  It was a great, albeit chilly and, at times, wet
experience.  But for vistas like this, it&#8217;s definitely worth going.</p>

<p><a target="_new" class="centered"
href="http://stevengharms.com/wp-content/uploads/2012/03/IMG_0148.jpg"><img
class="centered"
src="http://stevengharms.com/wp-content/uploads/2012/03/IMG_0148.jpg"
alt="#"></a></p>

<p><a href="http://www.facebook.com/media/set/?set=a.3581463904970.2161427.1524375828&amp;type=1&amp;l=f381de42fa"><em>Full photo collection</em></a></p>

<p><span id="more-2612"></span></p>

<p>Emil, a friend of Lauren&#8217;s friend Brian, had found a program that would allow
you to rent a &#8220;<a href="http://www.yosemitepark.com/accommodations_curryvillage_lodgingdetails.aspx">tent cabin in Curry
Village</a>&#8221;
ahead of the Spring thaw.  The tents are basic wooden structures with canvas
&#8220;walls&#8221; and a small heater inside.  It&#8217;s a good solution for car campers who
want the winter experience but who may not have the nerve for winter camping.</p>

<p>It sounded like an amazing &mdash; although frosty &mdash; proposition and
Yosemite is an incredibly beautiful place.  So we all headed out on Friday the
16<sup>th</sup> to take the path to Yosemite.  Arriving a little past four and
enduring on and off rain throughout the trip, a dry Yosemite was a welcome
sight.  While the weather was holding out on us as we arrived, the pictures
show that something <em>serious</em> was coming.  The feeling I had in these was
<em>unsettled</em>.</p>

<p><a target="_new" class="centered"
href="http://stevengharms.com/wp-content/uploads/2012/03/IMG_0085.jpg"><img
src="http://stevengharms.com/wp-content/uploads/2012/03/IMG_0085.jpg"
alt="#"></a></p>

<p>Toward dark we headed into Curry Village and got set up in our cabin.  Within an
hour or so we had opened up some snacks, had some delicious bourbon and headed
to the local mess hall for some dinner.  Upon our return it started pouring and
we played some Uno to while away the evening.  I remember when I noticed that
suddenly, I wasn&#8217;t hearing the rain anymore.  We opened up the front door and
saw about an inch of snow had fallen.  After we turned in we found that
<em>another</em> half-foot of snow fell while we slept and that we were in for a cold
and rainy / snowy day.</p>

<p><a target="_new"
href="http://stevengharms.com/wp-content/uploads/2012/03/IMG_0738.jpg"><img
class="centered"
src="http://stevengharms.com/wp-content/uploads/2012/03/IMG_0738.jpg"
alt="#"></a></p>

<p><em>Pic of our tent-cabin and surroundings</em></p>

<p>This prediction was accurate.  I wound up wearing my snowboarding gear with a
rainshell throughout the day.  That night after some much-needed downtime in the
cabin to warm back up we headed to the Yosemite lodge for some St. Patrick&#8217;s
drinks.</p>

<p><a target="_new"
href="http://stevengharms.com/wp-content/uploads/2012/03/IMG_0096.jpg"><img
class="centered"
src="http://stevengharms.com/wp-content/uploads/2012/03/IMG_0096.jpg"
alt="#"></a></p>

<p>Our last day, Sunday, was spectacular as the sun came out, the temperatures
remained cold and we were able to take some stunning photos before descending
from the mountain.  The trip back was slow going thanks to a few snowstorms and
a few icy patches, but Brian braved them all and got us back home safe and sound
in the Audi.</p>

<p><a target="_new"
href="http://stevengharms.com/wp-content/uploads/2012/03/IMG_0150.jpg"><img
class="centered"
src="http://stevengharms.com/wp-content/uploads/2012/03/IMG_0150.jpg"
alt="#"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://stevengharms.com/trip-to-yosemite/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Thoughts about &#8220;Dune&#8221;</title>
		<link>http://stevengharms.com/thoughts-about-dune</link>
		<comments>http://stevengharms.com/thoughts-about-dune#comments</comments>
		<pubDate>Wed, 14 Mar 2012 22:25:44 +0000</pubDate>
		<dc:creator>steven</dc:creator>
				<category><![CDATA[Movies]]></category>

		<guid isPermaLink="false">http://stevengharms.com/?p=2430</guid>
		<description><![CDATA[Ryan wrote a thoughful post about catching a 35mm print of Lynch&#8217;s &#8220;Dune&#8221;) at the Alamo Drafthouse. He notes that despite arriving &#8220;DOA&#8221; in 1984, it was, today, &#8220;a bit of a cult movie.&#8221; I thought I would take a few moments to write down why I am a member of the &#8220;Dune&#8221; cult following. [...]]]></description>
			<content:encoded><![CDATA[<p><Enter your content after this line - DO NOT DELETE></p>

<p>Ryan
<a href="http://http://www.signal-watch.com/2012/03/signal-watch-re-watches-dune-1984.html
" title="Seeing Dune">wrote</a> a thoughful post about catching a 35mm print of <a href="http://en.wikipedia.org/wiki/Dune_(film">Lynch&#8217;s
&#8220;Dune&#8221;</a>) at the <a href="http://drafthouse.com/">Alamo
Drafthouse</a>.  He notes that despite arriving &#8220;DOA&#8221; in
1984, it was, today, &#8220;a bit of a cult movie.&#8221;  I thought I would take a few
moments to write down why I am a member of the &#8220;Dune&#8221; cult following.  In short,
the reason I love &#8220;Dune&#8221; is because it is an artistically rich disaster.</p>

<h2>The Critical Response</h2>

<p>For a standard opinion on the movie, I refer to <a href="http://rogerebert.suntimes.com/apps/pbcs.dll/article?AID=/19840101/REVIEWS/401010332/1023">Roger
Ebert&#8217;s</a>
review of January 1, 1984:</p>

<blockquote>
  <p>This movie is a real mess, an incomprehensible, ugly, unstructured, pointless
  excursion into the murkier realms of one of the most confusing screenplays of
  all time. Even the color is no good; &#8230;David Lean solved that problem in
  LAWRENCE OF ARABIA, where he made the desert look beautiful and mysterious, not
  shabby and drab.</p>
</blockquote>

<h2>The Financial Response</h2>

<p>&#8220;Dune&#8221; cost its production company, de Laurentiis Productions, approximately
$40M to make.  It grossed ~$30M.  A $10M loss before DVD, resale, and licensing
agreements was a staggering loss.</p>

<p>So I can make neither the argument that &#8220;Dune&#8221; was misunderstood by audiences:
they voted no with their dollars.  Nor can I say this was an artist&#8217;s movie, a
beautiful <em>avant garde</em> that only the critics grasped.  Yet nevertheless I
admire and respect this movie.  Why?</p>

<h2>Why I love &#8220;Dune&#8221; anyway</h2>

<h3>Filming the Dune Universe is a Grand Dream</h3>

<p>The Dune universe is so expansive and thoroughly-concieved that it is like the
vast desert of Arrakis itself.  When your imagination finally collapses,
dehydrated, cooked and lost in the middle of a sand sea, you realize just how
engulfing Frank Herbert&#8217;s vision was, and that you&#8217;re nowhere close to any
respite from its expansivenes.</p>

<p><span id="more-2430"></span></p>

<p>It asks, in its (<em>roughly</em>) 6 books, What would civilization look like <em>after</em>
the machines take over (<em>Matrix</em>-style) and <em>after</em> humans re-take control of
their destiny <em>sans</em> &#8220;thinking machines?&#8221;  It imagines how humans could alter,
drug, and meditate themselves into filling the void left by the proscription of
computing and asks what would happen if there were a constrained commodity that
was the fulcrum for this replacement?  It even goes on to ask &#8220;Can any one being
assure humanity&#8217;s success against its inherent favor for the easy path and its
na&iuml;ve assumption that the universe is a benevolent place.&#8221;</p>

<p>Furthermore a great deal of the plot action is entirely <em>mental</em>.  Thanks to his
genetics and mass overdose of spice, Paul&#8217;s (portrayed by Kyle MacLachlan)
consciousness is literally being rewired.  This is <em>not</em> a change that suits a
visible medium.</p>

<p>These constraints should scream out to anyone: &#8220;this is unfilmable.&#8221;
Nevertheless, Lynch and de Laurentiis tried, joining a club of the truly
audacious film-makers.  I would put them in the ranks of &#8220;<a href="http://www.imdb.com/title/tt0031381/">Gone With the
Wind</a>,&#8221; or &#8220;<a href="http://en.wikipedia.org/wiki/Citizen_Kane">Citizen
Kane</a>,&#8221; &#8220;<a href="http://www.imdb.com/title/tt0078788/">Apocalypse
Now</a>, or
&#8220;<a href="http://www.imdb.com/title/tt0083946/">Fitzcarraldo</a>.&#8221;  While those productions
ended in vaunted success, &#8220;Dune&#8221; did not.  They aimed for the moon, and falling
short, left us a beautiful, broken body of Icarus in which we can find the
beauty of grand, failed, ideas.</p>

<p>But it is not only the act of making this film which was a grand dream, there
are beautiful dreams inside of the film&#8217;s content which speak to a grand and
majestic artistic vision.</p>

<h3>The Beautiful Wreckage that Speaks of a Grand Dream</h3>

<h4>The Costumes and Sets</h4>

<p>They are beautiful artifacts that will stand witness to generations to come of a
time when movies hired artisans to bring forth in fa&ccedil;ades, veneers, and
lighting the imagined dreams of science fiction.  While these dreams can be
hacked together in days by talented computer scientists or teens with time and
rendering software, there was a time when sets were conceived in lumber, lights,
and fabrics.<sup>*</sup>  The loss of this skill and this style of movie making
is economically expeditious, logical, and very, very sad.</p>

<h4>The Acting and Actors</h4>

<p>Here in the Bay Area many people choose to work at start-ups.  Many of them
fail.  Here we have a <em>shrug</em> attitude toward failure.  You meet people, you
work as hard as you can, and then, sometimes, you fail.  Sometimes those friends
you make in the failing are the crucial people you wind up needing in the
successful launch.  For example, the much-vaunted Twitter hatched from the
now-forgotten odio.com.</p>

<p>&#8220;Dune&#8221; is similar because it is a weird and fascinating waypoint for so many
actors&#8217; and type of actors&#8217; careers that it maintains a fascinating magnetism.</p>

<ol>
<li>David Lynch&#8217;s Favorites

<ol>
<li>Kyle MacLachlan established his Lynch <em>bona fides</em> here and went on to
wonderful and weird pairings: &#8220;<a href="http://www.imdb.com/title/tt0098936/">Twin
Peaks</a>,&#8221; &#8220;<a href="http://www.imdb.com/title/tt0090756/">Blue Velvet</a>, et al.&#8221;</li>
<li>Freddie Jones:  Last seen in <em>The Elephant Man</em></li>
</ol></li>
<li>The BBC drama / Royal Shakespeare Company

<ol>
<li>The &#8220;I, CLAVDIVS&#8221; crowd.  Finishing in 1976, this miniseries starred

<ol>
<li>Sian Philips:  The mother from Hell, Livia to become the Reverend Mother
from Hell, Mohaim in &#8220;Dune&#8221;</li>
<li>Patrick Stewart:  Sower of insurrection, Sejanus to become arms-master
Gurney Halleck, to become CAPTAIN MOTHER!@#%% PICARD</li>
</ol></li>
<li>Francesca Annis:  Recently of the BBC&#8217;s <em>Lillie</em> and in an odd genre
cross-over, &#8220;Krull.&#8221;</li>
</ol></li>
<li>Culty Actors:

<ol>
<li>Virginia Madsen:  Beautiful beyond words, you could believe she might have
been the emperor of the Known Universe&#8217;s daughter, but with that Lynch-y iciness
repeated again with (oh geez, where to start) Isabella Rossellini in &#8220;Blue
Velvet&#8221; or Patricia Arquette in &#8220;Lost Highway.&#8221;</li>
<li>Brad Dourif:  Just courted a Oscar in &#8220;One Flew Over the Cuckoo&#8217;s Nest&#8221;
plays human computer Piter de Vries</li>
<li>J&uuml;rgen Prochnow:  The captain from 1981&#8217;s &#8220;Das Boot&#8221; (what a movie!)</li>
<li>Max von Sydow:  Enough said.</li>
<li>Richard Jordan:  Co-star in the iconic &#8220;<a href="http://en.wikipedia.org/wiki/Logan's_Run">Logan&#8217;s Run</a>&#8221;</li>
</ol></li>
</ol>

<p>But, as Ebert rightly said in his review, many of the actors are <em>terribly</em>
underutilized.  They stare, they stand, they do not emote.  They wear weird
BDSM-y tight-fitted leather suits.<sup>**</sup></p>

<h4>The Director:  David Lynch</h4>

<p>In 1984 David Lynch was coming off of the success of the indie freakshow
&#8220;Eraserhead&#8221; and the mainstream drama &#8220;The Elephant Man.&#8221;  How de Laurentiis
decided that Lynch, one of the most cutting-edge of directors this side of <em>Un
Chien Andalou</em>, was the right call for space opera I&#8217;d love to know.  If you like
films that are both banal and horrible, American and international, rich and
gruesome, erotic and complex, then the Lynchian element only adds to this film&#8217;s
grounds for fascination.</p>

<h4>Soundtrack by TOTO</h4>

<p>&#8216;Nuff said.  This worked so well for Queen / Flash Gordon, apparently, they
wanted another electronic-y rock act to rock-opera-tize the background sounds.
Sweet.</p>

<h2>Was the Audience Too Unready?</h2>

<p>Yet for all the grandness of vision, the film didn&#8217;t connect with audiences.  As
Ryan noted, a movie that tries to sum up the setting in its poster is in
trouble.  An even worse portent was that a glossary of terms was handed to
attendees<sup>***</sup> to help them make sense of this world (on the assumption
that they hadn&#8217;t read the book(s)).  Can I blame anyone for thinking that this
movie isn&#8217;t worth a second look?  Can I blame those Pac-Man Fever beseiged folks
of 1984 for not attending enough &#8220;Dune&#8221; showings?  No, I admit, I cannot.</p>

<p>Maybe by all objective measure &#8220;Dune&#8221; was a failure.  Yet
somehow in all that failure, &#8220;Dune&#8221; still feels more like a success, of a sort,
to me, due to its fascinating fallout.  And perhaps this is what&#8217;s important
about why I like &#8220;Dune:&#8221;  liking it says something about me that I like to
imagine about myself.  And this is certainly the mechanism of how &#8220;cult&#8221; films
work:  to like &#8220;Dune&#8221; or &#8220;<a href="http://www.rockyhorror.com/">Rocky Horror Picture Show</a>&#8221; says something about us,
the &#8220;Dune&#8221;-o-philes.</p>

<h2>The Dune Shibboleth</h2>

<p>While most fans will concede the criticisms against the movie, it is in spite
of them, or perhaps because of them that, we, fans, love it even more.  I think
it&#8217;s because to say &#8220;I love this failure, warts and all&#8221; says something about
you.</p>

<p>It says that you believe in the triumph of Romanticism, and love, and
intelligence against the forces of military control and exploitation.  You love
that an artist&#8217;s artist somehow conned a reputable (<em>shush you, there in the
Peanut gallery</em>) production company out of tons of money to attempt to film the
unfilmable.  You&#8217;re proud that Lynch and de Laurentiis, struck out to take that
huge block of marble and fashion something great out of it.  You&#8217;re proud to say
that scary boundaries <em>should</em> be pushed and that when the attempt fails there
can still be a wonderful fallout.  In fact, what the great literary philosopher
<a href="http://www.cbs.com/late_night/late_late_show/">Craig Ferguson</a> once said of &#8220;Dr.
Who&#8221; holds true for &#8220;Dune.&#8221;</p>

<blockquote>
  <p>One thing is consistent, though and this is why the show is so beloved by
  geeks and nerds.  It&#8217;s all about the triumph of intellect and romance over
  brute force and cynicism&#8230;and if there is any hope for us in this giant
  explosion that we inhabit&#8230;it&#8217;s [that] intellect and romance triumph over
  brute force and cynicism (<a href="http://www.youtube.com/watch?v=M9P4SxtphJ4">source</a></p>
</blockquote>

<h2>Conclusion</h2>

<p>There&#8217;s something different about this failure that makes it greater than other
cinematic failures (say Uwe B&ouml;ll&#8217;s
&#8220;<a href="http://www.imdb.com/title/tt1756427/">Blubberella</a>&#8221;).  It wasn&#8217;t a failure in
art, or a failure to dream, it was only that the dream was too big for its
container, the project too vast to manage, the source material too rich to be
handled by mere mortals and technology of 1983.   As ever, I think of <em>amicus
loquax Ovid</em>:</p>

<blockquote>
  <p>solis<br />
  mollit odoratas, pennarum vincula, ceras;
  tabuerant cerae: nudos quatit ille lacertos,
  remigioque carens non ullas percipit auras</p>
</blockquote>


<hr />


<blockquote>
  <p>the sun<br />
  softens the fragrant wax, the bindings of the feathers
  the waxen joints melt:  the boy shakes bare forearms,
  but, stripped, he holds the air no more with his strokes</p>
</blockquote>

<p>I hope there are always those who dare to dream magnificent dreams.  They shall
always find me in their corner, cheering them on against the odds and eagerly
awaiting the beautiful lessons they find on the edge of failure and regardless of
whether they fall into that chasm themselves.</p>

<h2>Footnotes:</h2>

<p><sup>*</sup>: I even feel this now as I watch the original-original-original
versions of the &#8220;Star Wars&#8221; trilogy.  The seduction of George Lucas to the dark
side of CGI-driven special effects might be a fitting meta-trilogy for an
enterprising documentary director.</p>

<p><sup>**</sup>:  How much do I love to parse Dino de Laurentiis&#8217; motivations.
This is a man whose movies never, ever apologized for projecting the virgin /
whore dyad (Dale / Aura in <em>Flash Gordon</em>, Irulan / Chani in <em>Dune</em>, Valeria /
Witch in <em>Conan the Barbarian</em>, The Queen / Sonja in <em>Red Sonja</em>) into their arc
with appropriately provocative / diaphanous fabric choices to match.  I know
it&#8217;s not PC, but I also like his na&iuml;vit&eacute; as a post-war cinema
content generator.  I can imagine what he would have said:  &#8220;Look, ya gotta have
a pretty good girl, and a pretty bad girl.  Why are you hasslin&#8217; me about this?&#8221;</p>

<p><sup>***</sup>:  This also happened at &#8220;Tinker, Tailor, Soldier, Spy&#8221; this
year.  We were given brochures that broke down the &#8220;spy lingo.&#8221;  Knowing this
story on &#8220;Dune&#8221; I was worried for <em>TTSS</em>.  Thankfully it turned out to be
comprehensible (even without the insert).</p>
]]></content:encoded>
			<wfw:commentRss>http://stevengharms.com/thoughts-about-dune/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fascinating:  Why we should let go of &#960; in favor of &#964;</title>
		<link>http://stevengharms.com/fascinating-why-we-should-let-go-of-in-favor-of</link>
		<comments>http://stevengharms.com/fascinating-why-we-should-let-go-of-in-favor-of#comments</comments>
		<pubDate>Wed, 14 Mar 2012 22:02:52 +0000</pubDate>
		<dc:creator>steven</dc:creator>
				<category><![CDATA[Mathematics]]></category>

		<guid isPermaLink="false">http://stevengharms.com/?p=2587</guid>
		<description><![CDATA[As a person who took Trigonometry as an adult (at 29!), I was amazed by how much more fascinating the relationship between &#960; and radii became. I even spent some time building squares of golden sections with a compass, just like the ancients used to. In this post below, Vi Hart makes a compelling argument [...]]]></description>
			<content:encoded><![CDATA[<p>As a person who took Trigonometry as an adult (at 29!), I was amazed by how much
more fascinating the relationship between &pi; and radii became.  I even spent
some time building squares of golden sections with a compass, just like the
ancients used to.  In this post below, Vi Hart makes a compelling argument that
we should move on from &pi; and move to &tau;.  It&#8217;s a fascinating concept, but
what I like most about it is that it still preserves some of the aesthetic
mysteries that fundamental trigonometry provides.</p>

<div style="width: 420; margin: 5px auto;">
  <iframe width="420"  height="315" src="http://www.youtube.com/embed/jG7vhMMXagQ"
  frameborder="0" allowfullscreen></iframe>
</div>
]]></content:encoded>
			<wfw:commentRss>http://stevengharms.com/fascinating-why-we-should-let-go-of-in-favor-of/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using mutt with MacVim as external editor</title>
		<link>http://stevengharms.com/using-mutt-with-macvim-as-external-editor</link>
		<comments>http://stevengharms.com/using-mutt-with-macvim-as-external-editor#comments</comments>
		<pubDate>Wed, 14 Mar 2012 14:05:51 +0000</pubDate>
		<dc:creator>steven</dc:creator>
				<category><![CDATA[Technology and Computers]]></category>

		<guid isPermaLink="false">http://stevengharms.com/?p=2585</guid>
		<description><![CDATA[I love usig the mutt mail reader to turn through my mail. I recently set it up to make use of my MacVim installation by adding the following configuration to the .muttrc. set editor="mvim --remote-tab-wait-silent " This is pretty neat. When I go to reply or compose, I&#8217;m thrown into a new tab in MacVim [...]]]></description>
			<content:encoded><![CDATA[<p>I love usig the <a href="http://www.mutt.org/">mutt mail reader</a> to turn through my
mail. I recently set it up to make use of my MacVim installation by adding the
following configuration to the <code>.muttrc</code>.</p>

<p><code>set editor="mvim --remote-tab-wait-silent "</code></p>

<p>This is pretty neat.  When I go to reply or compose, I&#8217;m thrown into a new tab
in MacVim and I can compose / reply there.  After hitting <code>ZZ</code> or <code>:wq!</code>, mutt
properly handled the signal, but didn&#8217;t change OSX&#8217;s focus <em>back</em> to the
terminal window where Mutt was running.  By changing the <code>editor</code> to the
following configuration:</p>

<p><code>set editor="osascript $HOME/bin/mutt_edit.sh"</code></p>

<p>I was able to tell Mutt to send my temp file (for the edit) to <code>osascript</code>, a
utility that runs Applscript.  In <code>mutt_edit.sh</code> I provided a bit of a wrapper
around the <code>mvim</code> command such that it told OSX to re-activate my terminal
session after the editing activity finished.  Here&#8217;s the code:</p>

<pre><code>on run argv
  tell application "Finder"
    do shell script "mvim --remote-tab-wait-silent " &amp; item 1 of argv
  end tell
  tell application "iTerm (1.0.0.20111020)"
    activate
  end tell
end run
</code></pre>

<p>And that&#8217;s all it took.</p>
]]></content:encoded>
			<wfw:commentRss>http://stevengharms.com/using-mutt-with-macvim-as-external-editor/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Technical Outreach Workshops:  Needlessly Frightening at the Beginning</title>
		<link>http://stevengharms.com/technical-outreach-workshops-needlessly-frightening-at-the-beginning</link>
		<comments>http://stevengharms.com/technical-outreach-workshops-needlessly-frightening-at-the-beginning#comments</comments>
		<pubDate>Mon, 12 Mar 2012 12:52:41 +0000</pubDate>
		<dc:creator>steven</dc:creator>
				<category><![CDATA[Technology and Computers]]></category>

		<guid isPermaLink="false">http://stevengharms.com/?p=2557</guid>
		<description><![CDATA[One of the organizations that I&#8217;m most proud of helping out is Railsbridge. It aims to increase the diversity within open source software development, particularly women. Twice now I have worked with wonderful and amazing people in these sessions. Typical scene of getting laptops set up (source) In these activities I have encountered a powerful [...]]]></description>
			<content:encoded><![CDATA[<p>One of the organizations that I&#8217;m most proud of helping out is
<a href="http://workshops.railsbridge.org/">Railsbridge</a>.  It aims to increase the
diversity within open source software development, particularly women.  Twice
now I have worked with wonderful and amazing people in these sessions.</p>

<p><a
href="http://stevengharms.com/wp-content/uploads/2012/03/git-rbridge22.jpg"
target="_new" ><img
class="centered" src="http://stevengharms.com/wp-content/uploads/2012/03/git-rbridge22.jpg" alt="#"></a><br />
<em>Typical scene of getting laptops set up (<a href="https://twitter.com/#!/ultrasaurus/status/173458965806583808/photo/1">source</a>)</em></p>

<p>In these activities I have encountered a powerful enemy to successful teaching
that we, as organizers and teachers, should remain vigilant against: <em>negative
<a href="http://en.wikipedia.org/wiki/Confirmation_bias">confirmation bias</a></em>.</p>

<p>Negative confirmation bias is when a student walks into a situation expecting
that s/he is not going to succeed and then proceeds to look for data to back up
that negative view.  Why students have this negative view is a subject for
another post, but it is my belief that it is at the heart of why there is such
poor diversity in high tech.<sup>*</sup>  At development workshops / boot
camps, students encounter a <em>dangerous confirmant</em> of their negative bias in
one the earliest steps: &#8220;Bootstrap the setup using <code>git</code>.&#8221;</p>

<p>Facilitators must take an active role in reminding students that the
installation / bootstrap step bears <strong>no</strong> inherent reflection upon their
ability to enjoy, learn from, and perform well in the class.</p>

<p><span id="more-2557"></span></p>

<p>It&#8217;s surprising since planners and facilitators work so hard to make so many
other aspects of the student&#8217;s engagement easy <em>so as to</em> counter the
possibility of negative confirmation.  Specifically, Railsbridge sessions do a
great job:</p>

<ol>
<li>Delivering an energetic environment that checks: &#8220;<em>I knew developers were
boring, I don&#8217;t belong there.</em>&#8221;</li>
<li>Saying &#8220;welcome&#8221; upon check-in that mitigates: &#8220;<em>Everyone ignored me, I knew I didn&#8217;t belong
there.</em>&#8221;</li>
<li>Pre-communicating the transport situation that checks: <em>Couldn&#8217;t park,
probably didn&#8217;t belong there anyway</em>.&#8221;</li>
<li>Building &#8220;pods&#8221; where informal collaboration occurs that checks: &#8220;*No one saw I was confused, I knew everyone
there was smarter than me.  I knew I didn&#8217;t belong there. *&#8221;</li>
<li>Providing power strips, snacks, job prospects, etc.</li>
</ol>

<p>But then we run the risk of glossing over something that seems very simple.  We command:</p>

<blockquote>
  <p>&#8220;<code>git clone</code> a respository so that we can all start on the same page.&#8221;</p>
</blockquote>

<p>This is a simple operation for anyone who has it as part of their daily
workflow &mdash; something that we do with the casualness of deleting a file.
But it is easy forget that this culminating activity is built upon a series of
installations and configurations.  To wit:</p>

<ul>
<li>&#8220;Git clone a respository so that we can all start on the same page.&#8221;

<ul>
<li><code>git clone http://github.com/some/repo railsbr</code></li>
<li>get <code>git</code>

<ul>
<li>get <code>[homebrew](http://mxcl.github.com/homebrew/)</code></li>
<li>get <code>gcc</code> and its libraries</li>
<li>get <code>gcc</code> from the <a href="https://github.com/kennethreitz/osx-gcc-installer/">Kenneth Reitz bundle</a> <strong>OR</strong></li>
<li>get <code>gcc</code> from XCode for Lion <strong>OR</strong></li>
<li>get <code>gcc</code> from a legacy XCode</li>
</ul></li>
<li>Tacitly understand the concept of a SCM</li>
<li><em>etc.</em></li>
</ul></li>
</ul>

<p>The challenges, tweaks, and reliance on facilitators&#8217; judgment that &#8220;Oh don&#8217;t
worry about this, it&#8217;s not fatal&#8221; or &#8220;Oh, right, we need to copy XCode from the
USB key&#8221; can <em>easily</em> upset the student&#8217;s steady growth in confidence at the
most critical, incipient point.  Facilitators would be wise to handle this
particular snag carefully.</p>

<p>The last session I participated in focused on essential web development skills:
HTML, CSS, Javascript, and jQuery.  <code>git</code> has <em>absolutely no</em> direct
relationship to style of development.<sup>**</sup>  Yet as we stepped
through this stack of activities, I could almost <em>hear</em> the biases finding
confirmation:  &#8220;<em>If I can&#8217;t get this working and the thing hasn&#8217;t even started
yet, there&#8217;s no way I&#8217;ll figure out the rest.</em>&#8221;</p>

<p><strong>BUT</strong> once the students got past the installation snarl, they were well on
their way and, from the feedback, it seems all the students (and teachers!)
learned a lot and had a great time.  It is absolutely <em>essential</em> that
facilitators recognize this weakness in our curriculum and set expectations
around it properly.</p>

<p><a href="http://www.bignerdranch.com/">Big Nerd Ranch</a> founder <a href="http://en.wikipedia.org/wiki/Aaron_Hillegass">Aaron
Hillegass</a> has a great section in
the beginning of his <a href="http://www.amazon.com/Cocoa-Programming-Mac-OS-3rd/dp/0321503619">Cocoa programming for Mac
OSX</a>.  I
learned a lot from Aaron several years ago and I think of this story whenever I
get disappointed or let down in my battles learning anything.  Heck I&#8217;ve even
repeated a paraphrase of it to some of my students at events like this.  Here
is is from the source:</p>

<blockquote>
  <p>&#8220;I used to have a boss named Rock. Rock had earned a degree in astrophysics
  from <a href="http://www.caltech.edu/">Cal Tech</a> and had never had a job in which he
  used his knowledge of the heavens. Once I asked him whether he ever regretted
  getting the degree.  &#8220;Actually, my degree in astrophysics has proved to be very
  valuable,&#8221; he said.  &#8220;Some things in this world are just hard. When I am
  struggling with something, I sometimes think &#8216;Damn, this is hard for me. I
  wonder if I am stupid,&#8217; and then I remember that I have a degree in
  astrophysics from Cal Tech; I must not be stupid.&#8221;</p>
</blockquote>

<h2>Recommendations for Organizers</h2>

<p>If organizers use <code>git</code> or other bits of hacker-friendly technology to get your
students bootstrapped, it is <strong>imperative</strong> that you explain that success with
<code>git</code> has no inherent bearing on success with web development in general,
<code>ruby</code>, or <code>rails</code> in particular.</p>

<p>It&#8217;s also worth bearing note that this applies to many of the other macroscopic
activities that happen at workshops.  <code>rails g migration renameUserToClient</code>
runs on a similar &#8220;stack&#8221; of assumptions required to get the framework.  The
student will likely lack the familiarity required to discern the difference and
conclude that:</p>

<p><code>difficulty bootstrapping a tool == difficulty using the tool == I am stupid</code></p>

<p>Here are some approaches that I&#8217;ve tried.  Obviously, no approach is perfect
for all students, but here are some ideas.</p>

<ul>
<li>&#8220;This is magic, this is weird stuff and it&#8217;s something you&#8217;ll learn, but for
today, let&#8217;s just follow the instructions and not worry about the
particulars.  It&#8217;s not programming, it&#8217;s just a tool.&#8221;</li>
<li>&#8220;The goal for us, as teachers, is to get everyone on the same page.  This is
just administration, not really coding $TECHNOLOGY_NAME so much.  But we need
you to help us get your machine ready and we&#8217;ve chosen one of the most
difficult ways possible to do it (ha-ha).&#8221;</li>
<li>Use the &#8220;stack&#8221; metaphor above to explain that all of these little steps add
up to completing the one simple task of getting the student on the &#8220;same
page&#8221; by cloning a repository</li>
<li>Explain only as much as the student asks for.  For example:  &#8220;What&#8217;s <code>git</code>?&#8221;
It&#8217;s a way for synchornizing files from a master source.  We want all of the
students to have a synchronized &#8220;base&#8221; state.  <strong>NOT</strong>:  It&#8217;s a DCVS that
uses linked lists, has lightweight branching, and no designated HEAD.</li>
</ul>

<p>The hard part is to become interested, to wake up early, to find parking / take
transit, and to have the courage to actually open the door and say &#8220;I don&#8217;t
know, but I want to know.&#8221;  A bunch of noise about libraries should not halt
that process or that progress.</p>


<hr />


<p>Footnotes:</p>

<p>* Approximately 28% of high tech work is female; 2% in open source.</p>

<p>** In Railsbridge&#8217;s other sessions on Rails the linking is more obvious as
one must use <code>git</code> to deploy the code to public servers.  But acumen with an
SCM certainly has no necessary correlation to success in the field of software
development.</p>
]]></content:encoded>
			<wfw:commentRss>http://stevengharms.com/technical-outreach-workshops-needlessly-frightening-at-the-beginning/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blogging in Janus + MacVim + Vimblog</title>
		<link>http://stevengharms.com/blogging-in-janus-macvim-vimblog</link>
		<comments>http://stevengharms.com/blogging-in-janus-macvim-vimblog#comments</comments>
		<pubDate>Sun, 11 Mar 2012 16:49:13 +0000</pubDate>
		<dc:creator>steven</dc:creator>
				<category><![CDATA[Technology and Computers]]></category>

		<guid isPermaLink="false">http://stevengharms.com/?p=2501</guid>
		<description><![CDATA[As I mentioned elsewhere, my friend Daniel Miessler said that he would be ready to give up Textmate for Vim but were it for the level of blogging support. I have, hopefully, made it easier to do so. In fact, I&#8217;m writing this blog post and using my fork of Vimblog to manage it. Here&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>As I mentioned <a href="http://stevengharms.com/blogging-with-vim">elsewhere</a>, my friend <a href="http://danielmiessler.com/">Daniel
Miessler</a> said that he would be ready to give up
Textmate for Vim but were it for the level of blogging support.  I have,
hopefully, made it easier to do so.  In fact, I&#8217;m writing this blog post and
using my fork of <a href="https://github.com/sgharms/vimblog.vim">Vimblog</a> to manage it.</p>

<p>Here&#8217;s how this post was made:</p>

<ol>
<li><code>:Blog np</code> created a new post</li>
<li>Moved down to the <code>Categs</code> line and then: <code>:Blog cl</code></li>
<li>/Techno to match the right line.  Hit enter.</li>
<li><em>Vimblog just copied the category name to the yank clipboard for me and then&#8230;</em></li>
<li><em>p</em> to paste it in</li>
<li><em>G</em> to the end of the file</li>
<li><em>o</em> to start typing</li>
<li>Typed <code>Daniel Miessler</code></li>
<li><em><esc>v2b\gifl</em> did a Google I&#8217;m feeling Lucky to his site and wrapped it in a
markdown link</li>
<li>More editing</li>
<li>:Blog draft (<em>because it&#8217;s still alpha-grade code</em>) so I could check it out
in WordPress</li>
<li>Took a screen-shot of vim to put in the post</li>
<li>:Blog um ~/Desk<TAB>/vimb<TAB><CR></li>
<li>Vimblog pasted the url link to the image that makes this work:
<a href="http://stevengharms.com/wp-content/uploads/2012/03/vimblog22.png"><img
class="centered"
src="http://stevengharms.com/wp-content/uploads/2012/03/vimblog22.png"
alt="Screenshot of vimblog"></a></li>
<li>Published this post with <code>:Blog publish</code></li>
<li><em>Damn it feels good to be a gangsta</em></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://stevengharms.com/blogging-in-janus-macvim-vimblog/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blogging with Vim</title>
		<link>http://stevengharms.com/blogging-with-vim</link>
		<comments>http://stevengharms.com/blogging-with-vim#comments</comments>
		<pubDate>Thu, 08 Mar 2012 14:09:21 +0000</pubDate>
		<dc:creator>steven</dc:creator>
				<category><![CDATA[Technology and Computers]]></category>

		<guid isPermaLink="false">http://stevengharms.com/?p=2411</guid>
		<description><![CDATA[I have been wanting to get the Vim Editor working as a tool for blogging. I&#8217;d discussed this a time or two with my friend Daniel Miessler, and he brought up a critical thing that was missing for him in migrating away from Textmate: the ability to do an &#8220;I&#8217;m feeling lucky&#8221; hotlink onto a [...]]]></description>
			<content:encoded><![CDATA[<p>I have been wanting to get the <a href="http://www.vim.org/">Vim Editor</a> working
as a tool for blogging.  I&#8217;d discussed this a time or two with my friend
<a href="http://danielmiessler.com/">Daniel Miessler</a>, and he brought up a
critical thing that was missing for him in migrating away from
<a href="http://macromates.com/">Textmate</a>: the ability to do an &#8220;I&#8217;m feeling
lucky&#8221; hotlink onto a word as one is composing.</p>

<p>I had to admit, this was a pretty compelling feature provided by
Textmate&#8217;s &#8220;Hyperlink Helper&#8221; bundle.  Its lack definitely hindered 
my drive to blog in vim.</p>

<p>To that end, I have created my
first <a href="http://github.com/sgharms/GIFL">Vim plugin</a> and port this sexy
capability to Vim.</p>

<p>The port is called <em>GIFL</em> which is not some sort of obscure term for
attractive septugenarians, but rather is <strong>G</strong>oogle <strong>I&#8217;m</strong> <strong>F</strong>eeling
<strong>L</strong>ucky.</p>

<p><a href="http://www.quickmeme.com/meme/36hy2h/"><img src="/wp-content/uploads/2012/03/qm.jpg" class="centered" alt="insanity wolf recommends vimscript"></a></p>

<p>With this installed you can do things like:</p>

<p>Imagine you have the following text, with your cursor at &#8216;*&#8217;:</p>

<pre><code>*lindsay lohan
</code></pre>

<p>Now enter:</p>

<pre><code>\gifl2e
</code></pre>

<p>You now have:</p>

<pre><code>[lindsay lohan](http://www.myspace.com/lindsaylohan*)
</code></pre>

<p>That is, the Markdown code for a URL.  That&#8217;s pretty handy.  This loads
up in the global namespace, so you can use it anywhere and everywhere.
I&#8217;ve found it suprpisingly handy in places other than a blogging
context.  It&#8217;s still very, very, <em>very</em> alpha, but it gets the job done.</p>

<p><img src="/wp-content/uploads/2012/03/ship-it-squirrel.png" class="centered" alt="ship-it squirrel"/></p>

<p>I must say that coding in vimscript is a bit of a challenge, but I have
been greatly helped by <a href="http://learnvimscriptthehardway.stevelosh.com/">Steve Losh&#8217;s <em>Learn Vimscript the Hard
Way</em></a>.</p>

<p>By the way, thanks to <a href="https://github.com/pedromg/vimblog.vim">Pedro MG&#8217;s vimblog
project</a>, I was able to write
this post <em>in</em> Vim, with <em>GIFL</em> doing nearly all the linking.</p>

<p>I think that both <em>GIFL</em> and <em>Vimblog</em> need to be polished a bit before
I can say that, together, they make it as easy as it was in Textmate
to be a blogger, but it&#8217;s definitely <em>closer</em>.  Thanks to <a href="https://github.com/b4winckler/macvim">Macvim</a> + <a href="https://github.com/carlhuda/janus">Janus</a> 
as platform, this is close.</p>
]]></content:encoded>
			<wfw:commentRss>http://stevengharms.com/blogging-with-vim/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

