<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/stylesheets/rss.css" type="text/css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Tom Moertel's Weblog: Damian Conway's talk on Sufficiently Advanced Technologies</title>
    <link>http://blog.moertel.com/articles/2005/11/01/damian-conways-talk-on-sufficiently-advanced-technologies</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Quality rants on programming theory and stuff geeks like</description>
    <item>
      <title>Damian Conway's talk on Sufficiently Advanced Technologies</title>
      <description>&lt;p&gt;Over the weekend I attended &lt;a href="http://damian.conway.org/"&gt;Damian
Conway&amp;#8217;s&lt;/a&gt; talk on &lt;a href="http://damian.conway.org/Seminars//Technology.html"&gt;Sufficiently Advanced
Technologies&lt;/a&gt;,
hosted by the &lt;a href="http://pgh.pm.org/"&gt;Pittsburgh Perl Mongers&lt;/a&gt; and
presented at &lt;span class="caps"&gt;CMU&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;This was my first Damian Conway talk, and it was great.  I don&amp;#8217;t know
how Damian manages to give a killer talk immediately after suffering a
long, international flight and the associated time-zone changes, but
he did it.  If you ever get the chance to see Damian speak,
don&amp;#8217;t miss it.&lt;/p&gt;


	&lt;p&gt;The idea behind the talk was Arthur C. Clarke&amp;#8217;s bit about
sufficiently advanced technologies being indistinguishable from magic.
When it comes to programming, Damian argued, &amp;#8220;sufficiently advanced&amp;#8221; 
technologies ought not to impose programming taxes upon us; gaining
their benefits should be transparent and free &amp;#8211; otherwise, we won&amp;#8217;t
use them.&lt;/p&gt;


	&lt;p&gt;One example that Damian provided to illustrate this idea was an
updated version of
&lt;a href="http://search.cpan.org/dist/Lingua-EN-Inflect/"&gt;Lingua::EN::Inflect&lt;/a&gt;
that &lt;em&gt;automatically&lt;/em&gt; looks into interpolated strings and rewrites them
on the fly to ensure that they represent sensible English.  Thus if
you wrote code like this:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;print "$count errors were found\n" 
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Lingua::EN::Inflect would ensure that the right thing happens for
different values of &lt;code&gt;$count&lt;/code&gt;:&lt;/p&gt;


&lt;pre&gt;0 errors were found
1 error was found
2 errors were found
&lt;/pre&gt;

	&lt;p&gt;Why do this?  Because we already have easy ways to get the inflections
right &amp;#8211; a simple test and the &lt;code&gt;?:&lt;/code&gt; operator is all it takes
- &lt;em&gt;and yet we don&amp;#8217;t do it&lt;/em&gt;; thus, the cost of doing it must be too
high.  In other words, the existing technology must not be
sufficiently advanced, and we ought to improve upon it.&lt;/p&gt;


	&lt;p&gt;Damian argued that Perl was a great language for creating
Sufficiently Advanced Technologies (SATs).  To help make his case, he
cited Xavier Noria&amp;#8217;s
&lt;a href="http://search.cpan.org/dist/Acme-Pythonic/lib/Acme/Pythonic.pm"&gt;Acme::Pythonic&lt;/a&gt;,
which changes Perl&amp;#8217;s syntax to use Python&amp;#8217;s whitespace conventions.  (I thought that this was an interesting example because a couple of
years ago &lt;a href="http://www.kuro5hin.org/story/2003/3/18/235625/457"&gt;I had written a horrifying Perl
module&lt;/a&gt;
(&lt;a href="http://community.moertel.com/ss/space/Tom%27s+Perl+code/LayoutRule.pm"&gt;LayoutRule.pm&lt;/a&gt;)
to bring &lt;a href="http://www.haskell.org/"&gt;Haskell&amp;#8217;s&lt;/a&gt; layout rule to Perl.)
If
sweeping changes like this took only a few pages of code, he argued,
many other SATs were within reach.  (He jokingly said that
it was a little scary how close Perl was to the darkness that is
Python.  This got a big laugh.)  And, he said, Perl 6 is going to
make Perl an ideal language for creating SATs.&lt;/p&gt;


	&lt;p&gt;He showed us some other examples of SATs he was working on.  One
was a library for gathering user input that infers from its context
how it is being used and adjusts its behavior accordingly.  Another
was a &lt;a href="http://search.cpan.org/dist/Smart-Comments/lib/Smart/Comments.pm"&gt;Smart
Comments&lt;/a&gt;
module that lets comments hold assertions, aid in debugging, and
generate progress bars.&lt;/p&gt;


	&lt;p&gt;In sum, it was a fun talk that made a clear argument for reducing the
costs imposed by the interfaces we create for our libraries.  The talk
made me feel better about some of my more recent attempts to lower the
cost of doing things that I find too expensive in Perl, such as
&lt;a href="http://search.cpan.org/dist/AutoCurry/lib/AutoCurry.pm"&gt;specializing
functions&lt;/a&gt; and
&lt;a href="http://search.cpan.org/dist/Test-LectroTest/lib/Test/LectroTest.pm"&gt;testing algorithmic
code&lt;/a&gt;.
The talk also convinced me to place more effort on optimizing the
interfaces of my code for &lt;em&gt;use&lt;/em&gt;, rather than for some distant &amp;#8220;best
practice&amp;#8221; notion of what makes a good interface.&lt;/p&gt;


	&lt;p&gt;The talk made me want to &lt;em&gt;change something&lt;/em&gt;, and that&amp;#8217;s a pretty good
thing to say about a talk.&lt;/p&gt;</description>
      <pubDate>Tue, 01 Nov 2005 14:41:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:196462fe7111a3ffe73d543bfb1d94ad</guid>
      <author>Tom Moertel</author>
      <link>http://blog.moertel.com/articles/2005/11/01/damian-conways-talk-on-sufficiently-advanced-technologies</link>
      <category>programming</category>
      <category>perl</category>
      <category>perl</category>
      <category>talks</category>
      <category>damian</category>
      <category>conway</category>
      <trackback:ping>http://blog.moertel.com/articles/trackback/11</trackback:ping>
    </item>
  </channel>
</rss>
