<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title>bang!path</title>
  <link href="http://bangpath.org/atom.xml" rel="self"/>
  <link href="http://bangpath.org/"/>
  <updated>2011-11-01T21:33:53-07:00</updated>
  <id>http://bangpath.org/</id>
  <author>
    <name>John Whitley</name>
    
  </author>

  
  <entry>
    <title>A Helping Hand for pow.cx Users</title>
    <link href="http://bangpath.org/blog/2011/10/06/a-helping-hand-for-pow-dot-cx-users/"/>
    <updated>2011-10-06T20:13:00-07:00</updated>
    <id>http://bangpath.org/blog/2011/10/06/a-helping-hand-for-pow-dot-cx-users</id>
    <content type="html">&lt;p&gt;Here&amp;#8217;s a useful script I whipped up for &lt;a href=&quot;http//pow.cx/&quot;&gt;Pow.cx&lt;/a&gt; users. Drop &lt;a href=&quot;https://gist.github.com/1269353&quot;&gt;the pow script&lt;/a&gt; in a convenient spot like &lt;code&gt;~/bin&lt;/code&gt;, name it &lt;code&gt;pow&lt;/code&gt;, and give it a symlinky friend named &lt;code&gt;unpow&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;Liquid error: undefined method `join&amp;#8217; for &lt;a href=&quot;String&quot;&gt;\ncd ~/bin\nln -s pow unpow\n&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now you&amp;#8217;re all set for an even easier time working with Pow:&lt;/p&gt;
&lt;p&gt;Liquid error: undefined method `join&amp;#8217; for #&lt;String:0x00000101439c00&gt;&lt;/p&gt;
&lt;p&gt;You can choose a custom site name:&lt;/p&gt;
&lt;p&gt;Liquid error: undefined method `join&amp;#8217; for &lt;a href=&quot;String&quot;&gt;\npow ~/code/my-awezome-rails-app mara\nopen http://mara.dev/\n&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Cleaning up old sites is as easy as:&lt;/p&gt;
&lt;p&gt;Liquid error: undefined method `join&amp;#8217; for &lt;a href=&quot;String&quot;&gt;\nunpow ~/code/my-awezome-rails-app\n&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Full paths aren&amp;#8217;t needed, the &lt;code&gt;pow&lt;/code&gt; script will do the right thing:&lt;/p&gt;
&lt;p&gt;Liquid error: undefined method `join&amp;#8217; for &lt;a href=&quot;String&quot;&gt;\ncd ~/code/my-awezome-rails-app\npow .\n&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I periodically update &lt;code&gt;pow&lt;/code&gt;, so be sure to check &lt;code&gt;pow -h&lt;/code&gt; for current options and features not listed above.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://gist.github.com/1269353&quot;&gt;Pow script on gist.github.com&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Volt: Volume Toggle</title>
    <link href="http://bangpath.org/blog/2011/10/06/volt-volume-toggle/"/>
    <updated>2011-10-06T08:00:00-07:00</updated>
    <id>http://bangpath.org/blog/2011/10/06/volt-volume-toggle</id>
    <content type="html">&lt;p&gt;This is a handy shell script I whipped up to assist with mounting and unmounting OS X volumes.  In my case, I&amp;#8217;m using what seems to be a common &amp;#8220;hotrod&amp;#8221; aftermarket configuration of the Early 2011 Macbook Pro.  The system&amp;#8217;s main drive has been upgraded to an &lt;a href=&quot;http://eshop.macsales.com/shop/SSD/OWC/Mercury_Extreme_Pro_6G/&quot;&gt;&lt;span class=&quot;caps&quot;&gt;SSD&lt;/span&gt;&lt;/a&gt;, with the original hard drive &lt;a href=&quot;http://eshop.macsales.com/item/Other+World+Computing/DDAMBS0GB/&quot;&gt;moved to the optical bay&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;What with the upgraded Core i7 &lt;span class=&quot;caps&quot;&gt;CPU&lt;/span&gt;, discrete graphics, and big display, this system is not nearly as power frugal as a lightweight system like a Macbook Air.  Thus when I&amp;#8217;m out and about with this laptop, the `volt` script lets me quickly and easily spin down the hard drive.&lt;/p&gt;
&lt;p&gt;Pro Tip: Create a symlink to &lt;code&gt;volt&lt;/code&gt; with the same name as the volume you want to toggle (including spaces, if any):&lt;/p&gt;
&lt;p&gt;Liquid error: undefined method `join&amp;#8217; for &lt;a href=&quot;String&quot;&gt;\nln -s volt SpareVolume\n&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The symlink is now a shortcut to toggle that volume, handy for shorthand use from the command line or via tools like &lt;a href=&quot;http://www.obdev.at/products/launchbar/index.html&quot;&gt;LaunchBar&lt;/a&gt;.&lt;/p&gt;
&lt;div&gt;&lt;script src=&#8217;https://gist.github.com/1266140.js?file=&#8217;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;noscript&gt;&lt;pre&gt;&lt;code&gt;#!/bin/zsh

# VOLume Toggle =&amp;amp;gt; volt
#
# Usage: volt &amp;amp;lt;volume&amp;amp;gt;
#   This script toggles the mountedness of the specified OS X disk 
# volume using diskutil.  The volume may be specified as the first 
# parameter, or as the name of a symlink to this script.

volume=${1:=${0:t}}

mount | grep -q &amp;amp;quot;/Volumes/${volume} *(&amp;amp;quot;

if [[ $? -eq 0 ]]; then
  # Volume is mounted; eject it
	diskutil eject $volume
else
  # Volume is unmounted; mount it
	diskutil mount $volume
fi
&lt;/code&gt;&lt;/pre&gt;&lt;/noscript&gt;&lt;/div&gt;</content>
  </entry>
  
  <entry>
    <title>Steve Jobs 1955-2011</title>
    <link href="http://bangpath.org/blog/2011/10/05/steve-jobs-1955-2011/"/>
    <updated>2011-10-05T17:17:00-07:00</updated>
    <id>http://bangpath.org/blog/2011/10/05/steve-jobs-1955-2011</id>
    <content type="html">&lt;p&gt;Steve was widely lauded for his emphasis on design at Apple, but I&amp;#8217;m just as impressed with his amazing success at seeing his visions through to reality and in inspiring others with that vision.&lt;/p&gt;
&lt;p&gt;Goodbye, Mr. Jobs.  Thank you.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Lion tip &#8216;o the day: Stop automatic space reordering</title>
    <link href="http://bangpath.org/blog/2011/08/03/lion-tip-o-the-day-stop-automatic-space-reordering/"/>
    <updated>2011-08-03T00:00:00-07:00</updated>
    <id>http://bangpath.org/blog/2011/08/03/lion-tip-o-the-day-stop-automatic-space-reordering</id>
    <content type="html">&lt;h2&gt;The Skinny&lt;/h2&gt;
&lt;ol&gt;
	&lt;li&gt;Go to System Preferences &amp;#8211;&amp;gt; Mission Control&lt;/li&gt;
	&lt;li&gt;Uncheck &amp;#8220;Automatically rearrange spaces based on most recent use&amp;#8221;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Commentary&lt;/h2&gt;
&lt;p&gt;This is an absolute mis-feature of OS X Lion.  The default setting, &amp;#8220;Automatically rearrange spaces based on most recent use&amp;#8221;, causes spaces to rearrange themselves outside of my view.  The result? &lt;em&gt;Things are no longer where I left them when I return&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;What I cannot fathom is why anyone thought this was a good idea in the first place.  Apple, since when do the rooms of my house rearrange themselves &amp;#8220;based on most recent use&amp;#8221;?  This setting defeats the physical analogy of &amp;#8220;spaces&amp;#8221; and the natural leverage that provides to gesture-based navigation.  Users form a mental map of their work when using virtual desktops like OS X&amp;#8217;s Spaces.  This little bit of automation neatly scuttles that intuitive &amp;#8220;body knowledge&amp;#8221;.  Imagine how frustrating it would be to read a textbook whose pages rearranged themselves according to &amp;#8220;what did I look at most recently&amp;#8221; logic.  Is the page you want to the left or right?&lt;/p&gt;
&lt;p&gt;This is exactly the same design failure that Microsoft made with tabs in its Visual Studio development suite.  Unlike modern browser-based tab navigation, there&amp;#8217;s no way in Visual Studio to simply navigate to tabs &lt;em&gt;left&lt;/em&gt; or &lt;em&gt;right&lt;/em&gt;.  Instead, navigation always occurs via a &amp;#8220;most recently used&amp;#8221; rubric when using &lt;em&gt;next&lt;/em&gt; or &lt;em&gt;previous&lt;/em&gt; keys.  The user is burdened with having to maintain a historical knowledge of visited tabs that must match that &lt;em&gt;invisible&lt;/em&gt; record kept by the computer.  Thus it is with OS X Lion&amp;#8217;s Spaces.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>topgit on *BSD and Mac OS X</title>
    <link href="http://bangpath.org/blog/2009/10/06/topgit-on-bsd-and-mac-os-x/"/>
    <updated>2009-10-06T00:00:00-07:00</updated>
    <id>http://bangpath.org/blog/2009/10/06/topgit-on-bsd-and-mac-os-x</id>
    <content type="html">&lt;p&gt;The &lt;a href=&quot;http://repo.or.cz/w/topgit.git&quot;&gt;topgit&lt;/a&gt; patch queue manager for Git has a few bugs when used on &lt;span class=&quot;caps&quot;&gt;BSD&lt;/span&gt;-based systems, which includes Mac OS X.  Specifically, topgit assumes &lt;span class=&quot;caps&quot;&gt;GNU&lt;/span&gt; versions of sed and mktemp.  I&amp;#8217;ve &lt;a href=&quot;http://github.com/jwhitley/topgit&quot;&gt;forked topgit&lt;/a&gt; on Github and patched these issues.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve submitted a pull request upstream to Petr Baudis but haven&amp;#8217;t heard anything back yet.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>git and emacs: magit</title>
    <link href="http://bangpath.org/blog/2009/10/05/git-and-emacs-magit/"/>
    <updated>2009-10-05T00:00:00-07:00</updated>
    <id>http://bangpath.org/blog/2009/10/05/git-and-emacs-magit</id>
    <content type="html">&lt;p&gt;I&amp;#8217;ve recently started using &lt;a href=&quot;http://git-scm.com/&quot;&gt;git&lt;/a&gt; for some work projects.  Digging into the available modes for &lt;span class=&quot;caps&quot;&gt;GNU&lt;/span&gt; Emacs, &lt;a href=&quot;http://zagadka.vm.bytemark.co.uk/magit/&quot;&gt;magit&lt;/a&gt; (pronounced like &amp;#8220;magic&amp;#8221;) comes out at the top of the heap.  It&amp;#8217;s surprisingly well thought out and is well tailored to git&amp;#8217;s workflow, unlike the emacs VC integration.&lt;/p&gt;
&lt;p&gt;Give Alex Vollmer&amp;#8217;s &lt;a href=&quot;http://www.vimeo.com/2871241&quot;&gt;magit tutorial video&lt;/a&gt; a few minutes of your time to see what this tool has to offer.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Make Firefox search automatically case sensitive</title>
    <link href="http://bangpath.org/blog/2007/06/05/make-firefox-search-automatically-case-sensitive/"/>
    <updated>2007-06-05T00:00:00-07:00</updated>
    <id>http://bangpath.org/blog/2007/06/05/make-firefox-search-automatically-case-sensitive</id>
    <content type="html">&lt;h2&gt;The Skinny&lt;/h2&gt;
&lt;p&gt;In Firefox, open a new page with the location &amp;#8220;about:config&amp;#8221;.  Set the  config value &lt;code&gt;accessibility.typeaheadfind.casesensitive&lt;/code&gt; to &amp;#8216;2&amp;#8217;.&lt;/p&gt;
&lt;h2&gt;&amp;#8220;What did I just do?!&amp;#8221;&lt;/h2&gt;
&lt;p&gt;The Emacs text editor has a subtle-but-great search feature.  An interactive search that is all lower-case is treated as case-insensitive.  However, a search that contains any upper-case characters is automatically considered case-sensitive.  That is, a search for &lt;code&gt;foo&lt;/code&gt; will match any of &lt;code&gt;foo&lt;/code&gt;, &lt;code&gt;Foo&lt;/code&gt;, &lt;code&gt;FoO&lt;/code&gt; and so forth.  But a search for &lt;code&gt;Bar&lt;/code&gt; will match only &lt;code&gt;Bar&lt;/code&gt;, ignoring &lt;code&gt;bar&lt;/code&gt;, &lt;code&gt;BAR&lt;/code&gt;, etc.  Once you get used to it, this can be a great timesaver.&lt;/p&gt;
&lt;h3&gt;For about:config newbies&lt;/h3&gt;
&lt;p&gt;In Firefox, open a new tab/window and type &lt;code&gt;about:config&lt;/code&gt; into the location bar.  Look in the left column for the entry &lt;code&gt;accessibility.typeaheadfind.casesensitive&lt;/code&gt;.  You can use the &amp;#8220;Filter&amp;#8221; box at the top of the page to quickly reduce the list to a manageable size.  Try typing &amp;#8220;find&amp;#8221; and see what happens.  Once found, double-click on the entry name above, set the value to 2, and close the about:config page.  You&amp;#8217;re all set!  Firefox will now use automatic case-sensitivity for the find and link quick-find features.&lt;/p&gt;
&lt;h3&gt;Further reading&lt;/h3&gt;
&lt;p&gt;Documentation on &lt;a href=&quot;http://kb.mozillazine.org/Accessibility.typeaheadfind.casesensitive&quot;&gt;this setting&lt;/a&gt; and other &lt;a href=&quot;http://kb.mozillazine.org/About:config_entries&quot;&gt;about:config entries&lt;/a&gt; can be found in the &lt;a href=&quot;http://kb.mozillazine.org/Knowledge_Base&quot;&gt;MozillaZine Knowledge Base.&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>JRuby on Mac OS X vs. ant test</title>
    <link href="http://bangpath.org/blog/2006/09/29/jruby-on-mac-os-x-vs-ant-test/"/>
    <updated>2006-09-29T00:00:00-07:00</updated>
    <id>http://bangpath.org/blog/2006/09/29/jruby-on-mac-os-x-vs-ant-test</id>
    <content type="html">&lt;p&gt;I&amp;#8217;ve just started playing around with JRuby, starting off&lt;br /&gt;
with the first of the &lt;a href=&quot;http://jruby.codehaus.org/Tutorials&quot;&gt;JRuby tutorials&lt;/a&gt;.  Unfortunately, this very basic tutorial (mostly an installation guide) ran aground on OS X, 10.4.  &lt;code&gt;ant&lt;/code&gt; was complaining about not finding a &lt;a href=&quot;http://www.junit.org/&quot;&gt;junit&lt;/a&gt; task.&lt;/p&gt;
&lt;p&gt;Skimming the copious text that ant spews forth on this error, I downloaded JUnit and installed junit-4.1.jar in &lt;code&gt;~/.ant/lib&lt;/code&gt;.  No dice.  &lt;code&gt;ant&lt;/code&gt; was still its same bitchy self.&lt;/p&gt;
&lt;p&gt;After a frustrating period of Googling&lt;sup class=&quot;footnote&quot; id=&quot;fnr1&quot;&gt;&lt;a href=&quot;#fn1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, I happened across a useful tip for &lt;a href=&quot;http://www.oreillynet.com/mac/blog/2001/04/mac_os_x_java_wheres_my_java_h.html&quot;&gt;setting up JAVA_HOME on Mac OS X.&lt;/a&gt;  I tried that&lt;sup class=&quot;footnote&quot; id=&quot;fnr2&quot;&gt;&lt;a href=&quot;#fn2&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;, after having removed the junit jar file (trying to test one variable at a time.)  Still no dice.&lt;/p&gt;
&lt;p&gt;So for kicks, I tried putting the JUnit jar back in &lt;code&gt;~/.ant/lib&lt;/code&gt;, and the tests ran.  Go figure.&lt;/p&gt;
&lt;p class=&quot;footnote&quot; id=&quot;fn1&quot;&gt;&lt;a href=&quot;#fnr1&quot;&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt; Has &lt;em&gt;no one&lt;/em&gt; tried running &lt;code&gt;ant test&lt;/code&gt; on JRuby on OS X before now?&lt;/p&gt;
&lt;p class=&quot;footnote&quot; id=&quot;fn2&quot;&gt;&lt;a href=&quot;#fnr2&quot;&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt; zsh/bash users: &lt;code&gt;export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home&lt;/code&gt;&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Good Framework, Bad Framework.</title>
    <link href="http://bangpath.org/blog/2006/04/24/good-framework-bad-framework/"/>
    <updated>2006-04-24T00:00:00-07:00</updated>
    <id>http://bangpath.org/blog/2006/04/24/good-framework-bad-framework</id>
    <content type="html">&lt;p&gt;A few &lt;a href=&quot;http://www.python.org/&quot;&gt;Python&lt;/a&gt; blog entries I&amp;#8217;ve happened across of late have brought up the topic of frameworks versus libraries.  &lt;a href=&quot;http://www.artima.com/forums/flat.jsp?forum=106&amp;amp;thread=152104&quot;&gt;This article by Guido van Rossum&lt;/a&gt; questioned differences between the design of libraries and frameworks.  &lt;a href=&quot;http://an9.org/devdev/why_frameworks_suck&quot;&gt;&amp;#8216;Why Frameworks Suck&amp;#8217; by Andy Smith&lt;/a&gt; is an outright rant (who&amp;#8217;ve guessed from that title? ;-) against frameworks.&lt;/p&gt;
&lt;p&gt;While reading both of these, I was hit by a cognitive dissonance:  I&amp;#8217;ve both written and used frameworks that have been fantastic tools.  Yet, having grappled with J2EE (&lt;em&gt;cough&lt;/em&gt;), I certainly understand Andy&amp;#8217;s pain.  This raises a question: why do some frameworks suck, while others are a blessing?&lt;/p&gt;
&lt;h2&gt;Sins of Framework Design&lt;/h2&gt;
&lt;p&gt;For my purposes,  I&amp;#8217;ll define a framework as utility code that calls your code.  This stands in contrast to a library, which typically presents a self-contained collection functions that your code calls.  The differences between a library and a framework are a matter of what kind of abstraction is provided and what kind of problems they each solve.&lt;/p&gt;
&lt;p&gt;In my experience, the biggest sin in framework design is overreaching: a framework that simply tries to do too much.  Stuffing one framework full of too many use cases is an easy recipe for disaster.  The whole thing rapidly becomes too brittle and too big for developers to easily assimilate.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s where I get to take one of my own lessons learned as an example.  I wrote a framework a few years back that facilitated load balancing of compute tasks in a multi-processor embedded system.  The need for this framework became apparent when the developers writing the to-be-distributed applications ended up creating different ad-hoc synchronization code for each new task.  Each implementation ended up having different subtle bugs in it, and it quickly became apparent that this approach was unmaintainable.  I was able to refactor the whole mess and provide an interface which the dev teams could write to without explicit synchronization concerns in their code.  All the sync code was lifted into the framework, where it was written and debugged once for all of these applications &amp;#8212; a huge win.&lt;/p&gt;
&lt;p&gt;Alas, this framework was written at a startup under the influence of one too many &lt;a href=&quot;amazon:013143635X&quot;&gt;Death Marches&lt;/a&gt;.  The result of this was that the synchronization tools were too strongly tied to a larger framework with other concerns (e.g. state machines for the most common problem of our early implementations).&lt;/p&gt;
&lt;h2&gt;A Way to Better Frameworks&lt;/h2&gt;
&lt;p&gt;I&amp;#8217;m increasingly of the opinion that minimalism is a sound rule of thumb for framework design.  Don&amp;#8217;t let frameworks grow into big monolithic entities.  Instead, think in terms of a collaboration of micro-frameworks and libraries &amp;#8212; work in the smallest and least-intrusive units that solve the larger problems at hand.&lt;/p&gt;
&lt;p&gt;My hypothesis is that by keeping your frameworks small, they will provide fewer unnecessary constraints to their use (and to developers), they&amp;#8217;ll be easier to refactor, and will have a higher likelihood of being reusable.  This view provides an interesting answer to this complaint against the definition of a framework as &amp;#8220;code that calls your code&amp;#8221; :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The problem with this definition is that &amp;#8220;map&amp;#8221; counts as a framework.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Not as useful in a language where functions can be passed around like data.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&amp;#8217;d argue that this only indicates that higher-order programming languages (where functions can be passed like data) make it much easier to create tiny, reusable framework-like code.  While I wouldn&amp;#8217;t call &amp;#8220;map&amp;#8221; a framework either, we&amp;#8217;re used to equating &amp;#8220;framework&amp;#8221; with &amp;#8220;large&amp;#8221; or &amp;#8220;bloated&amp;#8221;, which need not be the case.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m a firm believer from experience that frameworks are an indispensable tool of software design.  That said, it&amp;#8217;s far too easy for a software designer to make the scope of a framework encompass the entire the problem domain &lt;em&gt;du jour&lt;/em&gt;.  In this way, we end up with overgrown, tightly coupled frameworks for enterprise web platforms, embedded whatsits, and so forth.  Remember: when thinking framework, think small.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>The Emancipation of Broadcast</title>
    <link href="http://bangpath.org/blog/2006/01/08/the-emancipation-of-broadcast/"/>
    <updated>2006-01-08T00:00:00-08:00</updated>
    <id>http://bangpath.org/blog/2006/01/08/the-emancipation-of-broadcast</id>
    <content type="html">&lt;h2&gt;Broadcast?  I suppose I meant Podcast&amp;#8230;&lt;/h2&gt;
&lt;p&gt;Podcasting is nifty, in that it frees the production of radio-style shows from actual broadcast radio.  The low barriers to entry have resulted in many great shows that you&amp;#8217;d never get to hear on commercial radio.  But this same ease of entry can also result in the occasional audio disaster&amp;#8230;&lt;/p&gt;
&lt;p&gt;On that theme, I&amp;#8217;ll illustrate with examples of The Good, The Bad, and The Ugly in podcasting.  First, we have:&lt;/p&gt;
&lt;h2&gt;The Good: &lt;a href=&quot;http://www.spacemusic.nl/&quot;&gt;Spacemusic.nl&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Spacemusic is an ambient/chillout podcast show by a guy named TC in the Netherlands.  Fun and funky, with good production values.  The show has good music, and TC does a fine job of delivering the &amp;#8220;text&amp;#8221; of the show, including the occasional interview.  Despite having a good time with it, TC keeps the show itself from getting in the way of the music.  Most excellent.&lt;/p&gt;
&lt;h2&gt;The Bad: &lt;a href=&quot;http://feeds.feedburner.com/RadRails&quot;&gt;RadRails Release Podcast&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The fine &lt;a href=&quot;http://www.radrails.org/&quot;&gt;RadRails&lt;/a&gt; developers  at &lt;span class=&quot;caps&quot;&gt;RIT&lt;/span&gt; have put together an Eclipse plugin for Ruby on Rails development. I love their work, and as such I apologize up front for picking on them.  Alas, they&amp;#8217;ve also given me an archetypical example for &lt;em&gt;The Bad&lt;/em&gt;; folks with a good idea to send to the world, but who need production polish &amp;#8212; something I think will be a hallmark of a lot of smaller talk podcasts&amp;#8230;  Put another way, unscripted recording is &lt;strong&gt;tough&lt;/strong&gt;.  Many folks aren&amp;#8217;t (yet) up for it.&lt;/p&gt;
&lt;p&gt;In the world of broadcast radio, professionals encounter various hurdles (training, screening, etc.) before they get on the air.  In the &amp;#8216;casts I&amp;#8217;ve heard, these guys use a relaxed, conversational style (good), but the discussion isn&amp;#8217;t sufficiently focused for a remote listener, with pauses, reiteration, and non-words (&amp;#8220;um&amp;#8221;) that work in personal conversation but don&amp;#8217;t work in broadcast/podcast.  To their credit, their vocal delivery/projection for recording is generally pretty good &amp;#8212; something that should serve well when they present at &lt;a href=&quot;http://www.eclipsecon.org/2006/Sub.do?id=115&quot;&gt;EclipseCon 2006&lt;/a&gt;.  I also give the RadRails crew big props for doing another kind of newfangled broadcast-redux media very well; read on for the details.&lt;/p&gt;
&lt;h2&gt;The Ugly: &lt;a href=&quot;http://www.macnn.com/articles/05/12/16/new.macnn.podcast.released/&quot;&gt;Dec 5, 2005 MacNN Podcast&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Holy crap (there&amp;#8217;s that Scottish &amp;#8216;r&amp;#8217; again)&amp;#8230;  when the content sucks, it&amp;#8217;s far, &lt;span class=&quot;caps&quot;&gt;FAR&lt;/span&gt; worse in a Podcast.  In this case, we&amp;#8217;ve got some talking heads from MacNN droning on about various bits of Apple speculation and software.  On a web page, it&amp;#8217;s possible to skim and quickly pick out interesting bits and leave the dross.  Or decide it&amp;#8217;s all dross and hit the back button.  In a podcast, you&amp;#8217;re stuck slogging through the dross &amp;#8212; will something interesting surface?  Or will the dross-slog just.. keep&amp;#8230; going&amp;#8230;.&lt;/p&gt;
&lt;h2&gt;Show Me, Don&amp;#8217;t Tell Me.&lt;/h2&gt;
&lt;p&gt;All that said, there&amp;#8217;s another interesting phenomenon that&amp;#8217;s becoming more common.  As it&amp;#8217;s become easier to produce and distribute video on the Internet, software tutorial videos are increasingly popular.  Fortunately, the RadRails developers get to be the heroes at the end of our tale.  Instead of the usual hard-to-grok documentation chapter rife with screenshots, a short video tells all about &lt;a href=&quot;http://download.radrails.org.nyud.net:8090/video/RadRails_Import.mov&quot;&gt;importing projects into RadRails.&lt;/a&gt;  This picture&amp;#8217;s worth far more than a thousand words &amp;#8212; it saves time and energy.&lt;/p&gt;
&lt;p&gt;All told, this is the same story of all disruptive publishing technologies.  A social, technological event lowers some barriers to entry for publication.  Some folks use the new medium to persist all manner of information, the rest of us figure out how to sort through it all, and everyone gradually learns how to further improve production and identification of Good Stuff.  The story is the same whether we&amp;#8217;re talking the advent of papyrus (all those scrolls!), or here at the advent of the Internet.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Everything has Eclipse support these days&#8230;</title>
    <link href="http://bangpath.org/blog/2005/12/15/everything-has-eclipse-support-these-days/"/>
    <updated>2005-12-15T00:00:00-08:00</updated>
    <id>http://bangpath.org/blog/2005/12/15/everything-has-eclipse-support-these-days</id>
    <content type="html">&lt;p&gt;It&amp;#8217;s amazing how many languages and environments have Eclipse support these days.  There&amp;#8217;s the flagship Eclipse Java support in the &lt;a href=&quot;http://www.eclipse.org/jdt/&quot;&gt;&lt;span class=&quot;caps&quot;&gt;JDT&lt;/span&gt;&lt;/a&gt;.  C and C++ are supported by the &lt;a href=&quot;http://www.eclipse.org/cdt/&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CDT&lt;/span&gt;&lt;/a&gt;.  For Ruby there&amp;#8217;s the &lt;a href=&quot;http://rubyeclipse.sourceforge.net/&quot;&gt;&lt;span class=&quot;caps&quot;&gt;RDT&lt;/span&gt;&lt;/a&gt;, for Python there&amp;#8217;s &lt;a href=&quot;http://pydev.sourceforge.net/&quot;&gt;PyDev&lt;/a&gt;, Perl has &lt;a href=&quot;http://e-p-i-c.sourceforge.net/&quot;&gt;&lt;span class=&quot;caps&quot;&gt;EPIC&lt;/span&gt;&lt;/a&gt;.  Even the functional languages &lt;a href=&quot;http://www.haskell.org/&quot;&gt;Haskell&lt;/a&gt; and &lt;a href=&quot;http://www.ocaml.org/&quot;&gt;OCaml&lt;/a&gt; have the &lt;a href=&quot;http://eclipsefp.sourceforge.net/&quot;&gt;EclipseFP&lt;/a&gt; project.&lt;/p&gt;
&lt;p&gt;For web developers not into the &lt;a href=&quot;http://www.eclipse.org/webtools/jst/main.html&quot;&gt;J2EE kink&lt;/a&gt;, there&amp;#8217;s Ruby on Rails support in &lt;a href=&quot;http://www.radrails.org/&quot;&gt;RadRails&lt;/a&gt;.  RadRails is available as both a standalone app as well as an Eclipse plugin.  Nice touch.&lt;/p&gt;
&lt;p&gt;I began to ponder whether there are any remotely mainstream languages that &lt;em&gt;don&amp;#8217;t&lt;/em&gt; have an Eclipse plugin.  With an inner chuckle I thought, &amp;#8220;Surely &lt;span class=&quot;caps&quot;&gt;COBOL&lt;/span&gt; must have been left behind!&amp;#8221;  Alas, &lt;a href=&quot;http://www.eclipse.org/cobol/&quot;&gt;I was wrong&lt;/a&gt;.  It&amp;#8217;s even a proper Eclipse project.  Silly me.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Welcome to Bangpath</title>
    <link href="http://bangpath.org/blog/2005/12/07/welcome-to-bangpath/"/>
    <updated>2005-12-07T00:00:00-08:00</updated>
    <id>http://bangpath.org/blog/2005/12/07/welcome-to-bangpath</id>
    <content type="html">&lt;p&gt;&lt;strong&gt;bang&lt;/strong&gt; (noun): the character &amp;#8220;!&amp;#8221;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;bang path&lt;/strong&gt; (noun):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[now historical] An old-style &lt;acronym title=&quot;Unix to Unix Copy&quot;&gt;&lt;span class=&quot;caps&quot;&gt;UUCP&lt;/span&gt;&lt;/acronym&gt; electronic-mail address specifying hops to get from some assumed-reachable location to the addressee, so called because each hop is signified by a bang sign. Thus, for example, the path &lt;code&gt;&#8230;!bigsite!foovax!barbox!me&lt;/code&gt; directs people to route their mail to machine &lt;code&gt;bigsite&lt;/code&gt; (presumably a well-known location accessible to everybody) and from there through the machine &lt;code&gt;foovax&lt;/code&gt; to the account of user &lt;code&gt;me&lt;/code&gt; on &lt;code&gt;barbox&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;text-align:right;&quot;&gt;&amp;#8212; &lt;a href=&quot;http://www.catb.org/~esr/jargon/html/B/bang-path.html&quot;&gt;The Jargon File&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;With that, welcome to bangpath.org!  This is John Whitley&amp;#8217;s personal website, which will gradually fill with useful tidbits on software development topics, other technical matters, and likely a software project or three.&lt;/p&gt;</content>
  </entry>
  
</feed>

