<?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>Aaron Feng comments</title>
    <link>http://aaronfeng.com/</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Adventures in software development</description>
    <item>
      <title>"Learning from io" by Leslie P. Polzer</title>
      <description>&lt;p&gt;In Common Lisp you could just add a method specialized on NIL (or write a macro that does this automatically).&lt;/p&gt;

&lt;p&gt;An alternative would be using the MOP for this.&lt;/p&gt;</description>
      <pubDate>Thu, 25 Sep 2008 07:37:54 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:cf1fdb7c-8302-46d3-bb5f-fc970e35e4b1</guid>
      <link>http://aaronfeng.com/articles/2008/09/24/learning-from-io#comment-6001</link>
    </item>
    <item>
      <title>"Learning from io" by Jonathan Tran</title>
      <description>&lt;p&gt;So what you're saying is... you implemented the Maybe monad in Ruby.&lt;/p&gt;</description>
      <pubDate>Thu, 25 Sep 2008 01:05:41 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:e2008cb2-c239-4782-8919-6c5fe80db62f</guid>
      <link>http://aaronfeng.com/articles/2008/09/24/learning-from-io#comment-5994</link>
    </item>
    <item>
      <title>"Closure Fun" by Andrew Gwozdziewycz</title>
      <description>&lt;p&gt;It retains state because it modifies the original string &lt;strong&gt;in place&lt;/strong&gt;. This is a very bad thing. You should make a copy of the string before using it. I believe the creators of C had qualms about including it in the standard library.&lt;/p&gt;</description>
      <pubDate>Mon, 01 Sep 2008 21:44:44 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:d11f236b-df56-4d96-ba1d-a5e3d59fe0b6</guid>
      <link>http://aaronfeng.com/articles/2008/06/30/closure-fun#comment-5992</link>
    </item>
    <item>
      <title>"Data recovery part 1: Freeze the dead hard drive" by Todd</title>
      <description>&lt;p&gt;Yeah we've been spoiled by HDDs these days, almost never failing.  And so we grow lax with our backups.&lt;/p&gt;

&lt;p&gt;I'm going to do some backing up when I get home.&lt;/p&gt;</description>
      <pubDate>Wed, 20 Aug 2008 10:42:05 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:506bb1c1-efaa-4cf3-a83b-a3d48cc61947</guid>
      <link>http://aaronfeng.com/articles/2008/07/31/data-recovery-part-1-freeze-the-dead-hard-drive#comment-5990</link>
    </item>
    <item>
      <title>"Data recovery part 1: Freeze the dead hard drive" by rotts</title>
      <description>&lt;p&gt;man, seems you have had luck on the Apple front!
at least with your macbook.
sorry to hear about the data loss, but yeah you should be backing up
data that you love :)&lt;/p&gt;

&lt;p&gt;usb/firewire drives are so cheap these days.&lt;/p&gt;</description>
      <pubDate>Fri, 08 Aug 2008 00:20:19 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:4bf9f287-dca7-4317-99e6-305750ae689c</guid>
      <link>http://aaronfeng.com/articles/2008/07/31/data-recovery-part-1-freeze-the-dead-hard-drive#comment-5989</link>
    </item>
    <item>
      <title>"Data recovery part 1: Freeze the dead hard drive" by Aaron Feng</title>
      <description>&lt;p&gt;I'm pretty sure there is something physically wrong with the drive itself.&lt;/p&gt;</description>
      <pubDate>Fri, 01 Aug 2008 06:21:17 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:0ab4357a-3d3b-44f2-8d42-d015c5a5cc35</guid>
      <link>http://aaronfeng.com/articles/2008/07/31/data-recovery-part-1-freeze-the-dead-hard-drive#comment-5988</link>
    </item>
    <item>
      <title>"Data recovery part 1: Freeze the dead hard drive" by Leslie P. Polzer</title>
      <description>&lt;p&gt;I don't know much about OSX, but perhaps giving it a try with a GNU/Linux boot CD might work?&lt;/p&gt;</description>
      <pubDate>Fri, 01 Aug 2008 05:34:15 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:5da2d68d-ad9f-4559-92d5-9ffb9c3969a0</guid>
      <link>http://aaronfeng.com/articles/2008/07/31/data-recovery-part-1-freeze-the-dead-hard-drive#comment-5987</link>
    </item>
    <item>
      <title>"Lisp ninja 2 - Refactoring" by Leslie P. Polzer</title>
      <description>&lt;p&gt;And here's another take on PARSE-PHP-ARRAY using LOOP:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;(defun parse-php-array (array)
  (loop for value in (mapcar #'get-array-value
                            (split-sequence #\Newline array))
        collect value into values
        finally (return (nreverse values))))
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I'm not sure why you want to reverse the values at the end, but here it is.&lt;/p&gt;</description>
      <pubDate>Thu, 03 Jul 2008 09:07:28 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:52fcfcec-e7ea-4091-88a0-6c91650d208b</guid>
      <link>http://aaronfeng.com/articles/2008/05/31/lisp-ninja-2-refactoring#comment-5985</link>
    </item>
    <item>
      <title>"Lisp ninja 2 - Refactoring" by Leslie P. Polzer</title>
      <description>&lt;p&gt;Wow, lots of spam here. Maybe you should turn on comment approval or some sort of CAPTCHA...&lt;/p&gt;

&lt;p&gt;Anyway, here's my Shinobi take of GET-FUNCTION-SIGNATURE:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;(defun get-function-signature (function-info)
  (let ((name (first function-info))
        (parameters (rest function-info)))
    (format nil "~A(~{~A~^, ~})" name (mapcar #'quote-string parameters))))
&lt;/code&gt;&lt;/pre&gt;</description>
      <pubDate>Thu, 03 Jul 2008 08:59:36 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:dc923e81-c0ab-4cc8-bc89-cc1b9b4b4f84</guid>
      <link>http://aaronfeng.com/articles/2008/05/31/lisp-ninja-2-refactoring#comment-5984</link>
    </item>
    <item>
      <title>"Closure Fun" by Leslie P. Polzer</title>
      <description>&lt;p&gt;This generator pattern is very common in C, and PHP borrows a lot from C (see strtok(3) for the C interface of this function). Python guys like to do stuff like this, too.&lt;/p&gt;

&lt;p&gt;How it works: the binding to REST is established on execution of the code once (and initialized to NIL). After that, the content of the variable is maintained by the code that is executed in the function body.&lt;/p&gt;

&lt;p&gt;Note that this implementation of strtok isn't thread-safe. Multiple threads will share REST among them.&lt;/p&gt;

&lt;p&gt;By the way, you can also just write&lt;/p&gt;

&lt;p&gt;(let (rest) ...&lt;/p&gt;

&lt;p&gt;if you want.&lt;/p&gt;</description>
      <pubDate>Thu, 03 Jul 2008 05:49:49 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:65fa9e7c-08d0-44a7-a421-a5d952180264</guid>
      <link>http://aaronfeng.com/articles/2008/06/30/closure-fun#comment-5975</link>
    </item>
  </channel>
</rss>
