<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<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/"
	>

<channel>
	<title>lisp &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/lisp/</link>
	<description>Feed of posts on WordPress.com tagged "lisp"</description>
	<pubDate>Sun, 06 Dec 2009 09:09:02 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Danny Glover seems to be releasing...]]></title>
<link>http://nicegirlmeanthoughts.wordpress.com/2009/12/04/danny-glover-seems-to-be-releasing/</link>
<pubDate>Fri, 04 Dec 2009 21:45:47 +0000</pubDate>
<dc:creator>nicegirlmeanthoughts</dc:creator>
<guid>http://nicegirlmeanthoughts.wordpress.com/2009/12/04/danny-glover-seems-to-be-releasing/</guid>
<description><![CDATA[his lisp a bit more losely these days. See BE KIND AND REWIND, 2012 and apparently SHOOTER (haven]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>his lisp a bit more losely these days.</p>
<p>See BE KIND AND REWIND, 2012 and apparently SHOOTER (haven&#8217;t seen SHOOTER, but I hear things.)</p>
<p><a href="http://nicegirlmeanthoughts.wordpress.com/files/2009/12/danny-glover.jpg"><img class="aligncenter size-full wp-image-784" title="Danny Glover: Master Lisper Extraordinaire" src="http://nicegirlmeanthoughts.wordpress.com/files/2009/12/danny-glover.jpg" alt="" width="266" height="344" /></a></p>
<p>There isn&#8217;t much to say other than&#8230;&#8221;Wow he&#8217;s got a killer lisp.&#8221;</p>
<p>I don&#8217;t have anything against him, he seems pretty cool and all. So I&#8217;m not going to bitch about him.</p>
<p>Good luck with that freakish spitolicious lisp. FREAK!</p>
<p>xoxo</p>
<p>Nice Girl</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SICP in Emacs]]></title>
<link>http://jugglingbits.wordpress.com/2009/12/04/sicp-in-emacs/</link>
<pubDate>Fri, 04 Dec 2009 06:44:25 +0000</pubDate>
<dc:creator>thomas11</dc:creator>
<guid>http://jugglingbits.wordpress.com/2009/12/04/sicp-in-emacs/</guid>
<description><![CDATA[Most people reading this will know that Structure and Interpretation of Computer Programs (SICP) by ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Most people reading this will know that <em>Structure and Interpretation of Computer Programs (SICP)</em> by Abelson and Sussman is one of the most well known and recommended books when it comes to core Computer Science, algorithms, and functional programming. Suffice it to say, if you want to explore these areas and enhance your programming on a level beyond knowing the latest framework, check out this book. It&#8217;s <a href="http://mitpress.mit.edu/sicp/">freely available online</a>, as well as recordings of <a href="http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/">lectures</a> the authors gave.</p>
<p>Now, in case that&#8217;s not nerdy enough for you, I found <a href="http://www.neilvandyke.org/sicp-texi/">a version in texinfo</a> yesterday. Complete with all graphics converted to ASCII art. Yes, kinda scary, but it rocks: have your Emacs display an info buffer with the book and a Scheme or CL REPL to play with the book&#8217;s code and work on the exercises. Just move around the book and evaluate the code snippets there. Neat!</p>
<p>I guess that means I have to resume my project of working through the exercises. I&#8217;m not even sure where my first couple solutions are&#8230;</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[First Clojure job posting! (Ft Lauderdale, USA)]]></title>
<link>http://lispjobs.wordpress.com/2009/12/02/first-clojure-job-posting-ft-lauderdale-usa/</link>
<pubDate>Wed, 02 Dec 2009 13:44:00 +0000</pubDate>
<dc:creator>Will Fitzgerald</dc:creator>
<guid>http://lispjobs.wordpress.com/2009/12/02/first-clojure-job-posting-ft-lauderdale-usa/</guid>
<description><![CDATA[I think this is the first real Clojure job posting I&#8217;ve seen. Check it out: 3 years experience]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I think this is the first <a href="https://www.comsys.com/jobs/detail.page?req_uk=10492877&#38;utm_source=Indeed&#38;utm_medium=organic&#38;utm_campaign=Indeed">real Clojure job posting</a> I&#8217;ve seen. Check it out: 3 years experience required (in Lisp and other languages, natch).</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SICP Exercise 4.29]]></title>
<link>http://wqzhang.wordpress.com/2009/12/02/sicp-exercise-4-29/</link>
<pubDate>Wed, 02 Dec 2009 04:48:39 +0000</pubDate>
<dc:creator>Weiqun</dc:creator>
<guid>http://wqzhang.wordpress.com/2009/12/02/sicp-exercise-4-29/</guid>
<description><![CDATA[SICP Exercise 4.29 (define (fib n) (cond ((= n 0) 0) ((= n 1) 1) (else (+ (fib (- n 1)) (fib (- n 2)]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-27.html#%_thm_4.29">SICP Exercise 4.29</a></p>
<pre class="wqz-code">
(<span class="scheme-keyword">define</span> (<span class="scheme-function-name">fib</span> n)
  (<span class="scheme-keyword">cond</span> ((= n 0) 0)
        ((= n 1) 1)
        (<span class="scheme-keyword">else</span> (+ (fib (- n 1)) (fib (- n 2))))))

(<span class="scheme-keyword">let</span> ((t0 0) (t1 0))
  (set! t0 (get-universal-time))
  (fib 20)
  (set! t1 (get-universal-time))
  (- t1 t0))
<span class="scheme-comment-delimiter">; </span><span class="scheme-comment">67 without memorization
</span><span class="scheme-comment-delimiter">; </span><span class="scheme-comment">12 with memorization
</span>
<span class="scheme-comment-delimiter">;;; </span><span class="scheme-comment">L-Eval input:
</span>(square (id 10))
<span class="scheme-comment-delimiter">;;; </span><span class="scheme-comment">L-Eval value:
</span>100
<span class="scheme-comment-delimiter">;;; </span><span class="scheme-comment">L-Eval input:
</span>count
<span class="scheme-comment-delimiter">;;; </span><span class="scheme-comment">L-Eval value:
</span>1 <span class="scheme-comment">; with memorization, (id 10) is called once.
</span>2 <span class="scheme-comment">; without memorization, (id 10) is called twice
</span></pre>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SICP Exercise 4.28]]></title>
<link>http://wqzhang.wordpress.com/2009/12/01/sicp-exercise-4-28/</link>
<pubDate>Tue, 01 Dec 2009 04:24:38 +0000</pubDate>
<dc:creator>Weiqun</dc:creator>
<guid>http://wqzhang.wordpress.com/2009/12/01/sicp-exercise-4-28/</guid>
<description><![CDATA[SICP Exercise 4.28 If the value of the operator is not forced, this will fail because f is a thunk. ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-27.html#%_thm_4.28">SICP Exercise 4.28</a></p>
<p>If the value of the operator is not forced, this will fail because <code>f</code> is a thunk.</p>
<pre class="wqz-code">
(<span class="scheme-keyword">let</span> ((f (<span class="scheme-keyword">lambda</span> (x) (* x x))))
  (f 2))
<span class="scheme-comment-delimiter">;</span><span class="scheme-comment">Unknown procedure type -- APPLY (thunk (lambda ... ...) (...))
</span></pre>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SICP Exercise 4.27]]></title>
<link>http://wqzhang.wordpress.com/2009/12/01/sicp-exercise-4-27/</link>
<pubDate>Tue, 01 Dec 2009 04:20:25 +0000</pubDate>
<dc:creator>Weiqun</dc:creator>
<guid>http://wqzhang.wordpress.com/2009/12/01/sicp-exercise-4-27/</guid>
<description><![CDATA[SICP Exercise 4.27 (define w (id (id 10))) ;;; L-Eval input: count ;;; L-Eval value: 1 ;;; L-Eval in]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-27.html#%_thm_4.27">SICP Exercise 4.27</a></p>
<pre class="wqz-code">
(<span class="scheme-keyword">define</span> <span class="scheme-function-name">w</span> (id (id 10)))
<span class="scheme-comment-delimiter">;;; </span><span class="scheme-comment">L-Eval input:
</span>count
<span class="scheme-comment-delimiter">;;; </span><span class="scheme-comment">L-Eval value:
</span>1
<span class="scheme-comment-delimiter">;;; </span><span class="scheme-comment">L-Eval input:
</span>w
<span class="scheme-comment-delimiter">;;; </span><span class="scheme-comment">L-Eval value:
</span>10
<span class="scheme-comment-delimiter">;;; </span><span class="scheme-comment">L-Eval input:
</span>count
<span class="scheme-comment-delimiter">;;; </span><span class="scheme-comment">L-Eval value:
</span>2
</pre>
<p>Defining <code>w</code> as <code>(id (id 10))</code> will cause the <code>eval</code> procedure to be applied to <code>(id (id 10))</code>.  So the outer <code>id</code> procedure will be evaluated.  And the <code>count</code> variable will be set to 1.  Printing the value of <code>w</code> will cause the inner <code>id</code> procedure to be evaluated.  So the final value of <code>count</code> will become 2. </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SICP Exercise 4.26]]></title>
<link>http://wqzhang.wordpress.com/2009/11/29/sicp-exercise-4-26/</link>
<pubDate>Sun, 29 Nov 2009 23:17:43 +0000</pubDate>
<dc:creator>Weiqun</dc:creator>
<guid>http://wqzhang.wordpress.com/2009/11/29/sicp-exercise-4-26/</guid>
<description><![CDATA[SICP Exercise 4.26 It is shown below how to implement unless as a special form. (define (eval exp en]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-27.html#%_thm_4.26">SICP Exercise 4.26</a></p>
<p>It is shown below how to implement <code>unless</code> as a special form.</p>
<pre class="wqz-code">
(<span class="scheme-keyword">define</span> (<span class="scheme-function-name">eval</span> exp env)
<span class="scheme-comment-delimiter">; </span><span class="scheme-comment">......
</span>        ((unless? exp) (eval (unless-&#62;if exp) env))
<span class="scheme-comment-delimiter">; </span><span class="scheme-comment">......
</span>)

(<span class="scheme-keyword">define</span> (<span class="scheme-function-name">unless?</span> exp) (tagged-list? exp 'unless))
(<span class="scheme-keyword">define</span> (<span class="scheme-function-name">unless-clauses</span> exp) (cdr exp))
(<span class="scheme-keyword">define</span> (<span class="scheme-function-name">unless-condition</span> clauses) (car clauses))
(<span class="scheme-keyword">define</span> (<span class="scheme-function-name">unless-usual-value</span> clauses) (cadr clauses))
(<span class="scheme-keyword">define</span> (<span class="scheme-function-name">unless-exceptional-value</span> clauses) (caddr clauses))
(<span class="scheme-keyword">define</span> (<span class="scheme-function-name">unless-&#62;if</span> exp)
  (expand-unless-clauses (unless-clauses exp)))
(<span class="scheme-keyword">define</span> (<span class="scheme-function-name">expand-unless-clauses</span> clauses)
  (make-if (unless-condition clauses)
           (unless-exceptional-value clauses)
           (unless-usual-value clauses)))
</pre>
<p>For the sake of argument, the following code will fail unless <code>unless</code> is implemented as a procedure.</p>
<pre class="wqz-code">
(<span class="scheme-keyword">define</span> (<span class="scheme-function-name">foo</span> f condition value-1 value-2)
  (f condition value-1 value-2))

(foo unless (&#62; 2 10) 1 2)
<span class="scheme-comment-delimiter">; </span><span class="scheme-comment">Unbound variable unless
</span><span class="scheme-comment-delimiter">;   </span><span class="scheme-comment">because unless is a special form
</span>
(<span class="scheme-keyword">define</span> (<span class="scheme-function-name">unless-proc</span> condition usual-value exceptional-value)
  (<span class="scheme-keyword">if</span> condition exceptional-value usual-value))
(foo unless-proc (&#62; 2 10) 1 2)
<span class="scheme-comment-delimiter">; </span><span class="scheme-comment">1
</span></pre>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SICP Exercise 4.25]]></title>
<link>http://wqzhang.wordpress.com/2009/11/29/sicp-exercise-4-25/</link>
<pubDate>Sun, 29 Nov 2009 23:14:03 +0000</pubDate>
<dc:creator>Weiqun</dc:creator>
<guid>http://wqzhang.wordpress.com/2009/11/29/sicp-exercise-4-25/</guid>
<description><![CDATA[SICP Exercise 4.25 The code does not work in a normal-order language. The maximum recursion depth wi]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-27.html#%_thm_4.25">SICP Exercise 4.25</a></p>
<p>The code does not work in a normal-order language.  The maximum recursion depth will be reached because the evaluation of the second argument of <code>unless</code> will proceed forever.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SICP Exercise 4.24]]></title>
<link>http://wqzhang.wordpress.com/2009/11/29/sicp-exercise-4-24/</link>
<pubDate>Sun, 29 Nov 2009 20:43:41 +0000</pubDate>
<dc:creator>Weiqun</dc:creator>
<guid>http://wqzhang.wordpress.com/2009/11/29/sicp-exercise-4-24/</guid>
<description><![CDATA[SICP Exercise 4.24 Below is the code I use for the experiment. (define (factorial n) (if (= n 1) 1 (]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-26.html#%_thm_4.24">SICP Exercise 4.24</a></p>
<p>Below is the code I use for the experiment.</p>
<pre class="wqz-code">
(<span class="scheme-keyword">define</span> (<span class="scheme-function-name">factorial</span> n)
  (<span class="scheme-keyword">if</span> (= n 1)
      1
      (* (factorial (- n 1)) n)))

(<span class="scheme-keyword">let</span> ((t0 0) (t1 0))
  (<span class="scheme-keyword">define</span> (<span class="scheme-function-name">loop</span> i n)
    (factorial 1234)
    (<span class="scheme-keyword">if</span> (&#60; i n)
        (loop (+ i 1) n)))
  (set! t0 (get-universal-time))
  (loop 0 200)
  (set! t1 (get-universal-time))
  (- t1 t0))
</pre>
<p>The results are 78 and 41 for the original metacircular evaluator and the improved evaluator, respectively.  So the original evaluator spends about 37 seconds on repeating syntactic analysis. </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SICP Exercise 4.23]]></title>
<link>http://wqzhang.wordpress.com/2009/11/29/sicp-exercise-4-23/</link>
<pubDate>Sun, 29 Nov 2009 20:03:52 +0000</pubDate>
<dc:creator>Weiqun</dc:creator>
<guid>http://wqzhang.wordpress.com/2009/11/29/sicp-exercise-4-23/</guid>
<description><![CDATA[SICP Exercise 4.23 The version of analyze-sequence in the text produces more efficient execution pro]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-26.html#%_thm_4.23">SICP Exercise 4.23</a></p>
<p>The version of <code>analyze-sequence</code> in the text produces more efficient execution procedure than Alyssa&#8217;s version.</p>
<p>The execution procedure produced by the <code>analyze-sequence</code> procedure in the text looks like this: </p>
<pre class="wqz-code">
(<span class="scheme-keyword">lambda</span> (env)
  ((<span class="scheme-keyword">lambda</span> (env)
     ((<span class="scheme-keyword">lambda</span> (env)
        (proc1 env)
        (proc2 env))
      env)
     (proc3 env))
   env)
  (proc4 env))
</pre>
<p>Here, <code>proc1</code>, <code>proc2</code>, <code>proc3</code> and <code>proc4</code> are the resulting procedures of applying the <code>analyze</code> procedure to individual expressions of a sequence.  </p>
<p>The execution procedure produced by Alyssa&#8217;s version looks like this:</p>
<pre class="wqz-code">
(<span class="scheme-keyword">lambda</span> (env)
  (execute-sequence (proc1 proc2 proc3 proc3) env))
</pre>
<p>When the above execution procedure is run, procedure <code>execute-sequence</code> is called.  Note that procedure <code>execute-sequence</code> contains a <code>cond</code> expression and an iteration process.  So it will be less efficient.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SICP Exercise 4.22]]></title>
<link>http://wqzhang.wordpress.com/2009/11/29/sicp-exercise-4-22/</link>
<pubDate>Sun, 29 Nov 2009 20:01:48 +0000</pubDate>
<dc:creator>Weiqun</dc:creator>
<guid>http://wqzhang.wordpress.com/2009/11/29/sicp-exercise-4-22/</guid>
<description><![CDATA[SICP Exercise 4.22 (define (analyze exp) ; ...... ((let? exp) (analyze (let-&gt;combination exp))) ;]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-26.html#%_thm_4.22">SICP Exercise 4.22</a></p>
<pre class="wqz-code">
(<span class="scheme-keyword">define</span> (<span class="scheme-function-name">analyze</span> exp)
<span class="scheme-comment-delimiter">; </span><span class="scheme-comment">......
</span>        ((let? exp) (analyze (let-&#62;combination exp)))
<span class="scheme-comment-delimiter">; </span><span class="scheme-comment">......
</span>)
</pre>
<p>See <a href="http://wqzhang.wordpress.com/2009/10/12/sicp-exercise-4-6/">SICP Exercise 4.6</a> for procedures <code>let?</code> and <code>let-&#62;combination</code>.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SinC — The Tiniest LISP Compiler (to Python)]]></title>
<link>http://bernhardkausler.wordpress.com/2009/11/28/sinc-%e2%80%94-the-tiniest-lisp-compiler-to-python/</link>
<pubDate>Sat, 28 Nov 2009 21:34:41 +0000</pubDate>
<dc:creator>Bernhard</dc:creator>
<guid>http://bernhardkausler.wordpress.com/2009/11/28/sinc-%e2%80%94-the-tiniest-lisp-compiler-to-python/</guid>
<description><![CDATA[Tim Lopez published an elegant and tiny LISP interpreter for Python on his blog. Inspired by Norvig]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Tim Lopez <a href="http://www.brool.com/index.php/the-tiniest-lisp-in-python">published</a> an elegant and tiny LISP interpreter for Python on his blog. Inspired by Norvig&#8217;s <a href="http://norvig.com/paip.html"><em>Paradigms of Artificial Intelligence Programming</em></a>. I developed an interpreter as well as a <em>compiler</em> for LISP in Python. Hence the interpreter is quite similar to Tim Lopez&#8217; implementation, I will present <strong>sinC</strong>, the <em>s-expression input compiler</em>. <strong>SinC compiles my own proprietary LISP dialect to Python source code.</strong></p>
<p><strong><a href="http://xkcd.com/224/"><img class="alignnone size-full wp-image-49" title="We lost the documentation on quantum mechanics.  You'll have to decode the regexes yourself." src="http://bernhardkausler.wordpress.com/files/2009/11/lisp.jpg" alt="We lost the documentation on quantum mechanics.  You'll have to decode the regexes yourself." width="500" height="148" /></a><br />
</strong></p>
<h2>The reader</h2>
<pre class="brush: python;">
def read(sexpr):
    grammar = r&#34;(\()&#124;(\))&#124;([^()\s]+)&#124;(\s+)&#34;

    def sequenceBuilder(match):
        leftbracket, rightbracket, atom, whitespace = match.groups()
        if(leftbracket): return '['
        elif(rightbracket): return ']'
        elif(atom): return '&#34;' + atom + '&#34;'
        elif(whitespace): return ','
    return eval(re.sub(grammar, sequenceBuilder, sexpr), None, None)
</pre>
<p>The reader converts a s-expression in a corresponding Python list representing the syntax tree. For example:</p>
<pre>(print (+ 1 2)) -&#62; ["print", ["+", "1", "2"]]</pre>
<p>Only alphanumeric characters are allowed in symbols. Especially no strings or brackets. They would break the reader.</p>
<h2>The evaluator</h2>
<pre class="brush: python;">
def comp(tree):
    if(type(tree) == list):
        if(tree[0] in specialForms):
            return specialForms.get(tree[0])(tree[1:])
        else:
            args = map(lambda x: comp(x), tree[1:])
            return tree[0] + &#34;(&#34; + &#34;,&#34;.join(args) + &#34;)&#34;
    else:
        return tree
</pre>
<p>The evaluator parses the syntax tree recursively. The first symbol in a list is always interpreted as a function and the remaining symbols as its paramters. If the symbol representing the function is found in <em>specialForms</em>, a Python function is called, returning the generated Python source code as a string.</p>
<p><strong>My dialect has the following special forms</strong>:</p>
<pre>set, first, rest, cons, quote, eq, cond</pre>
<p>Additionally, I implemented the algebraic operators &#8216;+&#8217;, &#8216;-&#8217;, &#8216;*&#8217; and &#8216;/&#8217; as special forms for convenience reasons.</p>
<p>Except for the <em>set</em> function, every special form is side effect-free and can be written as a Python lambda-expression. In particular, the evaluator is just nesting calls to pure Python functions.</p>
<h2>The transcription step and the <em>set</em> function</h2>
<pre class="brush: python;">
def set(rest):
    if(len(rest) == 2): # a variable
        globalScope.append((comp(rest[0]), comp(rest[1])))
    else: # a function
        globalScope.append((comp(rest[0]), &#34;lambda &#34; + comp(rest[1]).strip(&#34;[]&#34;) +&#34;: &#34; + comp(rest[2])))
    return &#34;None&#34;
</pre>
<p>The <em>set</em> function takes care of global variable and function bindings. In Python, such a binding is not possible in a lambda expression. So we evaluate this function to <em>None</em> and store the binding for later use in a <em>globalScope</em>. After parsing the syntax tree, we first generate Python code for the global Scope to establish the bindings and after that append the function calls generated by the comp function.</p>
<p>The whole compiler looks like this:</p>
<pre class="brush: python; collapse: true; light: false; toolbar: true;">
#!/usr/bin/env python

import re
import sys

errfile = &#34;&#60;sinc&#62;&#34;

def read(sexpr):
    grammar = r&#34;(\()&#124;(\))&#124;([^()\s]+)&#124;(\s+)&#34;

    def sequenceBuilder(match):
        leftbracket, rightbracket, atom, whitespace = match.groups()
        if(leftbracket): return '['
        elif(rightbracket): return ']'
        elif(atom): return '&#34;' + atom + '&#34;'
        elif(whitespace): return ','
    return eval(re.sub(grammar, sequenceBuilder, sexpr), None, None)

def set(rest):
    if(len(rest) == 2): # a variable
        globalScope.append((comp(rest[0]), comp(rest[1])))
    else: # a function
        globalScope.append((comp(rest[0]), &#34;lambda &#34; + comp(rest[1]).strip(&#34;[]&#34;) +&#34;: &#34; + comp(rest[2])))
    return &#34;None&#34;

specialForms = {
    &#34;set&#34;: set,
    &#34;first&#34;: lambda rest: &#34;(&#34; + comp(rest[0]) + &#34;)[0]&#34;,
    &#34;rest&#34;: lambda rest: &#34;(&#34; + comp(rest[0]) + &#34;)[1:]&#34;,
    &#34;cons&#34;: lambda rest: &#34;[&#34; + comp(rest[0])+&#34;] + &#34; + comp(rest[1]),
    &#34;quote&#34;: lambda rest: &#34;[&#34; + &#34;, &#34;.join(map(lambda x: comp(x), rest)) + &#34;]&#34;,
    &#34;eq&#34;: lambda rest: &#34;(&#34;+comp(rest[0])+&#34; == &#34;+comp(rest[1])+&#34;)&#34;,
    &#34;cond&#34;: lambda rest: &#34;(&#34;+comp(rest[1])+&#34; if &#34;+comp(rest[0])+&#34; else &#34;+comp(rest[2])+&#34;)&#34;,
    &#34;+&#34;: lambda rest: comp(rest[0])+&#34; + &#34;+comp(rest[1]),
    &#34;-&#34;: lambda rest: comp(rest[0])+&#34; - &#34;+comp(rest[1]),
    &#34;*&#34;: lambda rest: &#34;(&#34;+comp(rest[0])+&#34;) * (&#34;+comp(rest[1])+&#34;)&#34;,
    &#34;/&#34;: lambda rest: &#34;(&#34;+comp(rest[0])+&#34;) / (&#34;+comp(rest[1])+&#34;)&#34;
}

globalScope = []
def comp(tree):
    if(type(tree) == list):
        if(tree[0] in specialForms):
            return specialForms.get(tree[0])(tree[1:])
        else:
            args = map(lambda x: comp(x), tree[1:])
            return tree[0] + &#34;(&#34; + &#34;,&#34;.join(args) + &#34;)&#34;
    else:
        return tree

def transcribe(sexpr):
    tree = read(sexpr)
    if(type(tree) == tuple):
        transcripts = []
        for node in tree:
            transcripts.append(comp(node))
        transcript = &#34;\n&#34;.join(transcripts)
    else:
        transcript = comp(tree)

    initCode = []
    for expr in globalScope:
        initCode.append(str(expr[0]) + &#34; = &#34; + str(expr[1]) + &#34;\n&#34;)
    return &#34;&#34;.join(initCode) + transcript

def sinc(sexpr):
    transcript = transcribe(sexpr)
    print transcript

def repl():
    while(True):
        print &#34;sinC&#62; &#34;,
        sys.stdout.flush()
        line = sys.stdin.readline().lstrip(&#34;&#62;&#34;).strip()
        try:
            sinc(line)
        except:
            print &#34;???&#34;

if __name__ == &#34;__main__&#34;:
    if(len(sys.argv) == 2):
        f = open(sys.argv[1])
        sinc(f.read())
        f.close()

    else:
        print &#34;This is sinC-alpha. Interactice LISP to Python compiler.&#34;
        print
        repl()
</pre>
<p>Call it with a sourcefile as argument or with no arguments to compile s-expressions interactively (used this a lot for testing).</p>
<h2>Demo program: Series summation</h2>
<p>As a little demo we calculate the series summation of a range and print the result:</p>
<pre class="brush: plain;">
(set sum x (cond (eq x 0) 0 (+ (sum (- x 1)) x)))

(set range (quote begin end) (cond (eq begin end) (quote) (cons begin (range (+ begin 1) end))))
(set len list (cond (eq list (quote)) 0 (+ 1 (len (rest list)))))
(set map (quote fun list) (cond (eq list (quote)) (quote) (cons (fun (first list)) (map fun (rest list)))))

(set testrange (range 1 8))

(print (len testrange))
(print testrange)
(print (map sum testrange))
</pre>
<p>Call it</p>
<pre>$ ./sinc sum.sinc  &#124; python
7
[1, 2, 3, 4, 5, 6, 7]
[1, 3, 6, 10, 15, 21, 28]</pre>
<p>and <strong>it works</strong>! The generated code looks like this:</p>
<pre class="brush: python;">
sum = lambda x: (0 if (x == 0) else sum(x - 1) + x)
range = lambda begin, end: ([] if (begin == end) else [begin] + range(begin + 1,end))
len = lambda list: (0 if (list == []) else 1 + len((list)[1:]))
map = lambda fun, list: ([] if (list == []) else [fun((list)[0])] + map(fun,(list)[1:]))
testrange = range(1,8)
None
None
None
None
None
print(len(testrange))
print(testrange)
print(map(sum,testrange))
</pre>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SICP Exercise 4.21]]></title>
<link>http://wqzhang.wordpress.com/2009/11/25/sicp-exercise-4-21/</link>
<pubDate>Thu, 26 Nov 2009 02:49:17 +0000</pubDate>
<dc:creator>Weiqun</dc:creator>
<guid>http://wqzhang.wordpress.com/2009/11/25/sicp-exercise-4-21/</guid>
<description><![CDATA[SICP Exercise 4.21 ; The evaluation proceeds as follows ((lambda (n) ((lambda (fact) (fact fact n)) ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-26.html#%_thm_4.21">SICP Exercise 4.21</a></p>
<pre class="wqz-code">
<span class="scheme-comment-delimiter">; </span><span class="scheme-comment">The evaluation proceeds as follows
</span>((<span class="scheme-keyword">lambda</span> (n)
   ((<span class="scheme-keyword">lambda</span> (fact)
      (fact fact n))
    (<span class="scheme-keyword">lambda</span> (ft k)
      (<span class="scheme-keyword">if</span> (= k 1)
          1
          (* k (ft ft (- k 1)))))))
 10)

<span class="scheme-comment-delimiter">;</span><span class="scheme-comment">--&#62;
</span>
((<span class="scheme-keyword">lambda</span> (fact)
   (fact fact 10))
 (<span class="scheme-keyword">lambda</span> (ft k)
   (<span class="scheme-keyword">if</span> (= k 1)
       1
       (* k (ft ft (- k 1))))))

<span class="scheme-comment-delimiter">;</span><span class="scheme-comment">--&#62;
</span>
((<span class="scheme-keyword">lambda</span> (ft k)
   (<span class="scheme-keyword">if</span> (= k 1)
       1
       (* k (ft ft (- k 1)))))
 (<span class="scheme-keyword">lambda</span> (ft k)
   (<span class="scheme-keyword">if</span> (= k 1)
       1
       (* k (ft ft (- k 1)))))
 10)

<span class="scheme-comment-delimiter">;</span><span class="scheme-comment">--&#62;
</span>
(<span class="scheme-keyword">if</span> (= 10 1)
    1
    (* 10 ((<span class="scheme-keyword">lambda</span> (ft k)
             (<span class="scheme-keyword">if</span> (= k 1)
                 1
                 (* k (ft ft (- k 1)))))
           (<span class="scheme-keyword">lambda</span> (ft k)
             (<span class="scheme-keyword">if</span> (= k 1)
                 1
                 (* k (ft ft (- k 1)))))
           9)))

<span class="scheme-comment-delimiter">;</span><span class="scheme-comment">--&#62;
</span>(* 10 ((<span class="scheme-keyword">lambda</span> (ft k)
         (<span class="scheme-keyword">if</span> (= k 1)
             1
             (* k (ft ft (- k 1)))))
       (<span class="scheme-keyword">lambda</span> (ft k)
         (<span class="scheme-keyword">if</span> (= k 1)
             1
             (* k (ft ft (- k 1)))))
       9))

<span class="scheme-comment-delimiter">;</span><span class="scheme-comment">......
</span></pre>
<p>The following expression computes the 10th Fibonacci number.</p>
<pre class="wqz-code">
((<span class="scheme-keyword">lambda</span> (n)
   ((<span class="scheme-keyword">lambda</span> (fibo)
      (fibo fibo n))
    (<span class="scheme-keyword">lambda</span> (fb k)
      (<span class="scheme-keyword">cond</span> ((= k 0) 0)
            ((= k 1) 1)
            (<span class="scheme-keyword">else</span> (+ (fb fb (- k 1))
                     (fb fb (- k 2))))))))
 10)
</pre>
<p>An alternative definition of f:</p>
<pre class="wqz-code">
(<span class="scheme-keyword">define</span> (<span class="scheme-function-name">f</span> x)
  ((<span class="scheme-keyword">lambda</span> (even? odd?)
     (even? even? odd? x))
   (<span class="scheme-keyword">lambda</span> (ev? od? n)
     (<span class="scheme-keyword">if</span> (= n 0) true (od? ev? od? (- n 1))))
   (<span class="scheme-keyword">lambda</span> (ev? od? n)
     (<span class="scheme-keyword">if</span> (= n 0) false (ev? ev? od? (- n 1))))))
</pre>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SICP Exercise 4.20]]></title>
<link>http://wqzhang.wordpress.com/2009/11/25/sicp-exercise-4-20/</link>
<pubDate>Thu, 26 Nov 2009 02:46:41 +0000</pubDate>
<dc:creator>Weiqun</dc:creator>
<guid>http://wqzhang.wordpress.com/2009/11/25/sicp-exercise-4-20/</guid>
<description><![CDATA[SICP Exercise 4.20 (define (eval exp env) ; ...... ((letrec? exp) (eval (letrec-&gt;let exp) env)) ;]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-26.html#%_thm_4.20">SICP Exercise 4.20</a></p>
<pre class="wqz-code">
(<span class="scheme-keyword">define</span> (<span class="scheme-function-name">eval</span> exp env)
<span class="scheme-comment-delimiter">; </span><span class="scheme-comment">......
</span>        ((letrec? exp) (eval (letrec-&#62;let exp) env))
<span class="scheme-comment-delimiter">; </span><span class="scheme-comment">......
</span>)

(<span class="scheme-keyword">define</span> (<span class="scheme-function-name">letrec?</span> exp) (tagged-list? exp 'letrec))
(<span class="scheme-keyword">define</span> (<span class="scheme-function-name">make-unassigned-letrec</span> vars)
  (<span class="scheme-keyword">if</span> (null? vars)
      '()
      (cons (list (car vars) ''*unassigned*)
            (make-unassigned-letrec (cdr vars)))))
(<span class="scheme-keyword">define</span> (<span class="scheme-function-name">make-set-letrec</span> vars exps)
  (<span class="scheme-keyword">if</span> (null? vars)
      '()
      (cons (list 'set! (car vars) (car exps))
            (make-set-letrec (cdr vars) (cdr exps)))))
(<span class="scheme-keyword">define</span> (<span class="scheme-function-name">letrec-&#62;let</span> exp)
  (<span class="scheme-keyword">let*</span> ((assi (let-assignment exp))
         (lvars (let-var assi))
         (lexps (let-exp assi)))
    (cons 'let (cons (make-unassigned-letrec lvars)
                     (append (make-set-letrec lvars lexps)
                             (let-body exp))))))
</pre>
<p>See <a href="http://wqzhang.wordpress.com/2009/10/12/sicp-exercise-4-6/">SICP Exercise 4.6</a> for the definitions of <code>let-assignment</code>, <code>let-body</code>, <code>let-var</code> and <code>let-exp</code>.</p>
<p>I am going to skip the environment diagram.  But I will explain why Louis Reasoner is wrong.  Note that</p>
<pre class="wqz-code">
  (<span class="scheme-keyword">let</span> ((even?
         (<span class="scheme-keyword">lambda</span> (n)
           &#60;body of even? including call to odd?&#62;)
        (odd?
         (<span class="scheme-keyword">lambda</span> (n)
           &#60;body of odd? including call to even?&#62;)))
        &#60;rest of body of f&#62;))
</pre>
<p>is equivalent to</p>
<pre class="wqz-code">
  ((<span class="scheme-keyword">lambda</span> (even? odd?)
     &#60;rest of body of f&#62;)
   (<span class="scheme-keyword">lambda</span> (n) &#60;body of even? including call to odd?&#62;)
   (<span class="scheme-keyword">lambda</span> (n) &#60;body of odd? including call to even?&#62;))
</pre>
<p>There are three lambda functions in the above piece of code.  The arguments <code>even?</code> and <code>odd?</code> of the first lambda function have no relationship whatsoever with <code>odd?</code> in the body of the second lambda function and <code>even?</code> in the body of the third lambda function.  The way I see it, the arguments <code>even?</code> and <code>odd?</code> of the first lambda function are just names.  We can rename them to <code>foo</code> and <code>bar</code> if we like.  Therefore the above code will not work.  Louis Reasoner is wrong.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[The Big Bang Theory - "The Vengeance Formulation"]]></title>
<link>http://cultural-learnings.com/2009/11/23/the-big-bang-theory-the-vengeance-formulation/</link>
<pubDate>Tue, 24 Nov 2009 03:28:57 +0000</pubDate>
<dc:creator>Myles</dc:creator>
<guid>http://cultural-learnings.com/2009/11/23/the-big-bang-theory-the-vengeance-formulation/</guid>
<description><![CDATA[&#8220;The Vengeance Formulation&#8221; November 23rd, 2009 Last week, the show chose to split its s]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:center;"><a href="http://memles.wordpress.com/files/2009/05/bigbangtitle.jpg"><img class="alignnone size-full wp-image-2937" title="bigbangtitle" src="http://memles.wordpress.com/files/2009/05/bigbangtitle.jpg" alt="" width="500" height="126" /></a></p>
<h3 style="text-align:center;"><a href="http://memles.wordpress.com/files/2009/05/bigbangtitle.jpg"></a><span style="color:#000000;">&#8220;The Vengeance Formulation&#8221;</span></h3>
<p style="text-align:center;"><strong><em>November 23rd, 2009</em></strong></p>
<p>Last week, the show chose to split its story between something that works (Sheldon and Penny) and something that doesn&#8217;t (Leonard, Wolowitz and Raj on their own), resulting in an episode that was a mixed bag (although perhaps a bit better than I gave it credit for, as my distaste for the latter perhaps overshadowed the strength of the former).</p>
<p>This week, however, the show returns to more of an ensemble structure, and while nothing reaches the heights of adhesive ducks it&#8217;s a solid episode as a whole because it manages a reasonably emotional Wolowitz storyline with a cheap but not ineffective Sheldon storyline. There was every chance for these two elements to go off the rails (based on both the show&#8217;s tradition of misusing Wolowitz and the presence of Kripke), so the fact that they stayed moderately in orbit makes this a victory, if not exactly an overwhelming success.</p>
<p><!--more--></p>
<p>When it comes to Wolowitz, I strongly believe that less is more, unless the show decides to do what they did here and turn Wolowitz from obnoxious to introspective. While interacting with a fantasy version of Katee Sackhoff isn&#8217;t genius or anything, it allows Wolowitz to stop acting like he runs the joint and actually come to terms with his delusions. The naked bathtub fantasy version of Katee Sackhoff spoke the truth, and while there were signs of the old Wolowitz (feeling more slighted by the fact that Sackhoff&#8217;s date was tall as opposed to handsome, since he actually believes he is handsome) for the most part he was honest with himself. Sure, he messes up his romantic overtures to Bernadette, but he was legitimately charming during his tone deaf wailing at episode&#8217;s end, and the fact that Howard was given any continuity at all in terms of a relationship is such a huge step forward that I think it&#8217;s commendable.</p>
<p>It also shows how even Howard, who to this point one couldn&#8217;t imagine in a relationship, is effectively getting the relationship stories that Leonard has been given in the past, except ones that are actually funny. While Sheldon in a relationship might be too ludicrous, and Raj in a relationship has been made impossible by the alcohol gimmick, Howard and Leonard are both effectively eligible, but the show has always resisted treating Howard seriously (by having his actual skills be so outmatched by his capability), sending him off to gothic night clubs and moving him away from legitimate couplings. However, while Leonard&#8217;s relationships tended to be neurotic and sort of dull, Howard&#8217;s relationship is (to use his own word) quirky in a way that adds a fun dynamic to the show. Sure, I&#8217;m not a huge fan of his relationship with his shrill mother, and I could have used less talk about what he was doing in the tub, but for once the show didn&#8217;t actually treat him like a horny 15-year old, and for this I was most grateful and certainly entertained.</p>
<p>As for the other half of the episode, it really comes down to how funny you find someone talking in a high-pitched voice and how you feel about Eric Kripke. Twitter user <a href="http://twitter.com/SnowDan">SnowDan</a> mentioned that he likes Kripke because it&#8217;s ironic that the university bully has a lisp (which would, outside of that world, make him subject to bullying), but I&#8217;ve always felt like that joke has been long ago used up in favour of dialogue that calls attention to the lisp unnecessarily. The idea of Sheldon having a nemesis is funny on its own, which is why Leslie Winkle was more interesting to me (especially because the gender politics of it all wreaked havoc with Sheldon&#8217;s already problematic ability to respond in kind) than someone both more dully mean-spirited and less witty. Beyond the broad irony, that for me was not clever enough to sustain the character beyond a first appearance, the character is a normal guy who has a lisp, and most of the humour derived from the character has been through how he says it rather than what he says.</p>
<p>But I thought that this week&#8217;s story was less let down by Kripke (who on only a few occasions fell into traps like &#8220;Wiot&#8221;) and more by a single decision. I like the general principle of the storyline, with Sheldon&#8217;s big moment turning into an embarrassment and his attempt at vengeance going horribly, horribly wrong. There&#8217;s something very solid about that, and even when I know that we&#8217;re never going to get to see the aftermath (since everything will, conveniently for Sheldon, reset next week) the uncontrollable chaos of the final sequence was even communicated through webcam. However, where the storyline suffered was that the joke of Sheldon and his high-pitched voice didn&#8217;t appear to actually be Jim Parsons with helium, nor Jim Parsons faking such a voice. Unless I&#8217;m mistaken, the voice was looped in during post-production, which if true is a huge disappointment, and took me out of the scene regardless.</p>
<p>There were a number of things in this episode that bugged me a bit, like how the other guys so quickly joined in on laughing at Sheldon on the radio (as it was national radio, after all), or how Raj was too busy making fun of Sheldon to help Leonard try to get him out of bed, or how Penny&#8217;s self-awareness about her relationship with Leonard didn&#8217;t extend to her realizing that they have no actual chemistry and that sitting in close proximity to each other does not a relationship make. But none of these elements felt like they were the point of their respective storylines: Sheldon&#8217;s embarrassment was necessary to get to his vengeance gone awry, and Penny needed to be aware of her own relationship so she could objectively view Wolowitz&#8217;s and be able to ward off Bernadette.</p>
<p>And those two storylines worked, coming to solid conclusions that were either narratively satisfying or humorously destructive. They didn&#8217;t offer any particular comic highs, but they didn&#8217;t offend any of my sensibilities either, so I can&#8217;t really complain.</p>
<h3><span style="color:#000000;">Cultural Observations</span></h3>
<ul>
<li>Katee Sackhoff in the tub makes me realize that some part of me feels obligated to watch 24 this season with her being part of the cast.</li>
<li>It says something about the show&#8217;s conditioning to not bother remembering things from previous episodes that it took me a while to figure out if Bernadette was actually the person on whom Wolowitz went on a double date a while back. However, I&#8217;ll give them this: her trait of not getting Wolowitz&#8217;s jokes was memorable enough that I was at least 75% sure.</li>
<li>While some small moments bugged me, I thought Sheldon nailing the whoopie cushion gag on Leonard really did prove its comic validity.</li>
<li>And just in case we weren&#8217;t sure, apparently Raj is delicious caramel.</li>
<li>If Sepinwall writes a review, I think &#8220;as soon as I play Cylon and Colonist&#8221; seems like the obvious &#8220;after the jump&#8221; line. We&#8217;ll see if I&#8217;m right.</li>
</ul>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[the (not so) mysterious common lisp loop]]></title>
<link>http://grault.wordpress.com/2009/11/21/the-not-so-mysterious-common-lisp-loop/</link>
<pubDate>Sat, 21 Nov 2009 17:46:48 +0000</pubDate>
<dc:creator>grault</dc:creator>
<guid>http://grault.wordpress.com/2009/11/21/the-not-so-mysterious-common-lisp-loop/</guid>
<description><![CDATA[A good interview question: what is the value of the following form? CL-USER&gt; (mapcar #'funcall (l]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>A good interview question: what is the value of the following form?</p>
<pre>
CL-USER&#62; (mapcar #'funcall
		 (loop
		    as i from 1 upto 3
		    collect (lambda () i)))
???
</pre>
<p>&#160;
<p>&#8220;The Truth Is Out There&#8221; where <a href="http://www.lispworks.com/documentation/HyperSpec/Body/f_mexp_.htm">macroexpand</a> lives.</p>
<pre>
CL-USER&#62; (macroexpand `(loop for i from 1 upto 3 collect (lambda () i)))
(BLOCK NIL
  (LET ((I 1))
    (DECLARE (TYPE (AND REAL NUMBER) I))
    (SB-LOOP::WITH-LOOP-LIST-COLLECTION-HEAD (#:LOOP-LIST-HEAD-1070
                                              #:LOOP-LIST-TAIL-1071)
      (SB-LOOP::LOOP-BODY NIL
                          (NIL NIL (WHEN (&#62; I '3) (GO SB-LOOP::END-LOOP)) NIL)
                          ((SB-LOOP::LOOP-COLLECT-RPLACD
                            (#:LOOP-LIST-HEAD-1070 #:LOOP-LIST-TAIL-1071)
                            (LIST (LAMBDA () I))))
                          (NIL (SB-LOOP::LOOP-REALLY-DESETQ I (1+ I))
                           (WHEN (&#62; I '3) (GO SB-LOOP::END-LOOP)) NIL)
                          ((RETURN-FROM NIL
                             (SB-LOOP::LOOP-COLLECT-ANSWER
                              #:LOOP-LIST-HEAD-1070)))))))
T
CL-USER&#62;
</pre>
<p>&#160;
<p>Therefore i is a variable and different values are bound to it during the loop. This is explained very well <a href="http://www.lispworks.com/documentation/HyperSpec/Body/06_abaa.htm">here</a>.</p>
<p>The good candidate answers (4 4 4), because it&#8217;s clearly stated on previous page, how this type of loop terminates.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Software/firmware developer (Lisp), San Diego, CA]]></title>
<link>http://lispjobs.wordpress.com/2009/11/21/softwarefirmware-developer-lisp-san-diego-ca/</link>
<pubDate>Sat, 21 Nov 2009 16:18:09 +0000</pubDate>
<dc:creator>Will Fitzgerald</dc:creator>
<guid>http://lispjobs.wordpress.com/2009/11/21/softwarefirmware-developer-lisp-san-diego-ca/</guid>
<description><![CDATA[For biomedical devices, Software/Firmware Developer &#8211; Lisp (Contract to Hire).]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>For biomedical devices, <a href="http://search9.smartsearchonline.com/sdrr/jobs/jobdetails.asp?current_page=3&#38;city=&#38;location=&#38;job_type=&#38;emp_status=&#38;direct_jo_num=&#38;country=&#38;k1=&#38;k2=&#38;k3=&#38;k4=&#38;k5=&#38;k6=&#38;k7=&#38;k8=&#38;salary_min=&#38;co_num=&#38;apply=yes&#38;job_number=1336">Software/Firmware Developer &#8211; Lisp </a>(Contract to Hire).</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Os Melhores Podcasts de Tecnologia para Desenvolvedores  ]]></title>
<link>http://andrefaria.com/2009/11/20/os-melhores-podcasts-de-tecnologia-para-desenvolvedores/</link>
<pubDate>Fri, 20 Nov 2009 14:32:29 +0000</pubDate>
<dc:creator>andrefaria</dc:creator>
<guid>http://andrefaria.com/2009/11/20/os-melhores-podcasts-de-tecnologia-para-desenvolvedores/</guid>
<description><![CDATA[Um dos maiores problemas da sociedade moderna é a dificuldade de locomoção diária, a maioria das pes]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Um dos maiores problemas da sociedade moderna é a dificuldade de locomoção diária, a maioria das pessoas passa horas em seus carros, ou em meios de transporte públicos para irem de lugar a outro. Há alguns anos atrás quando morava na zona norte de São Paulo e trabalha na zona sul, essa era minha realidade. Uma vez que naquela época passar por isso era inevitável procurei formas de fazer com esse tempo pudesse de alguma forma torna-se produtivo, foi então que comecei a ouvir à podcasts.</p>
<div class="wp-caption aligncenter" style="width: 410px"><a href="http://www.flickr.com/photos/dantaylor/87397283/"><img class=" " title="iPod FM radio remote por dan taylor" src="http://farm1.static.flickr.com/41/87397283_ebc7fbaadc.jpg" alt="iPod FM radio remote por dan taylor" width="400" height="300" /></a><p class="wp-caption-text">iPod FM radio remote por dan taylor</p></div>
<p>De acordo com a Wikipedia, Podcasting é uma forma de publicação de arquivos de mídia digital (áudio, vídeo, foto, etc.) pela Internet, através de um feed RSS, que permite aos utilizadores acompanhar a sua atualização. Assim, é possível o acompanhamento e/ou download automático do conteúdo de um podcast.</p>
<p>Neste post apresentarei os podcasts aos quais escuto e os episódios principais para que você ouça. Sugiro que você utilize o iTunes para inscrever-se nos podcasts e sincronizar com seu iPod.</p>
<h2>Desenvolvimento Ágil</h2>
<div class="wp-caption aligncenter" style="width: 410px"><a href="http://www.flickr.com/photos/pcalcado/2268593480/in/set-72157604854195771/"><img class=" " title="por pcalcado" src="http://farm3.static.flickr.com/2050/2268593480_68100bfa7c.jpg" alt="por pcalcado" width="400" height="300" /></a><p class="wp-caption-text">por pcalcado</p></div>
<h4>Podcast da ImproveIt</h4>
<p><span style="font-weight:normal;">por Vinícius Teles<br />
<a href="http://improveit.com.br/podcast">http://improveit.com.br/podcast<br />
</a>Português</span></p>
<ul>
<li><a href="http://improveit.com.br/podcast/improvecast-13-entrevista-alisson-vale-experiencias-ageis">Entrevista com Alisson Vale da Phidelis</a></li>
<li><a href="http://improveit.com.br/podcast/improvecast-11-entrevista-alexandre-magno-fdd-scrum-experiencias-ageis">Entrevista com Alexandre Magno na Série Experiências Ágeis</a></li>
<li><a href="http://improveit.com.br/podcast/improvecast-8-entrevista-carlos-barbieri-mpsbr">Entrevista com Carlos Barbieri sobre o MPS.BR</a></li>
<li><a href="http://improveit.com.br/podcast/improvecast-19-entrevista-ancar-experiencias-ageis">Entrevista com a equipe da Ancar na Série Experiências Ágeis</a></li>
</ul>
<h4>AgilCast</h4>
<p><span style="font-weight:normal;">Por AgilCoop<br />
<a href="http://agilcoop.incubadora.fapesp.br/portal/agilcast">http://agilcoop.incubadora.fapesp.br/portal/agilcast<br />
</a>Português</span></p>
<ul>
<li><a href="http://agilcoop.incubadora.fapesp.br/portal/agilcast/episodios/Agilcast03-Testes.mp3">Uma Visão Geral Sobre Scrum</a></li>
<li><a href="http://agilcoop.incubadora.fapesp.br/portal/agilcast/episodios/Agilcast03-Testes.mp3">Testes Automatizados</a></li>
<li><a href="http://agilcoop.incubadora.fapesp.br/portal/agilcast/episodios/Agilcast04-bds-ageis.mp3">Bancos de dados ágeis e refatoração de bancos de dados</a></li>
</ul>
<h4>Agile Toolkit Podcast<br />
<span style="font-weight:normal;"><a href="http://agiletoolkit.libsyn.com">http://agiletoolkit.libsyn.com</a><br />
Inglês</span></h4>
<ul>
<li><a href="http://agiletoolkit.libsyn.com/index.php?post_id=537344">Tom Goulet &#8211; Cucumber, Ruby and the transition to Generalizing Specialist (2009)</a></li>
<li><a href="http://agiletoolkit.libsyn.com/index.php?post_id=530103">Jim Miller &#8211; The Product Owner Role and Business Alignmnet</a></li>
<li><a href="http://agiletoolkit.libsyn.com/index.php?post_id=482372">Tips and Advice &#8211; Retrospectives</a></li>
</ul>
<h4>ThoughtWorks Podcast</h4>
<p><span style="font-weight:normal;"><a href="http://www.thoughtworks.com/what-we-say/podcasts.html">http://www.thoughtworks.com/what-we-say/podcasts.html</a><br />
Inglês</span></p>
<h2>Open Source</h2>
<h4><strong>FLOSS Weekly</strong></h4>
<p><span style="font-weight:normal;">por Leo Laport, Jono Bacon e Randal Schwartz<br />
Inglês</span></p>
<ul>
<li><a href="http://twit.tv/floss87">Entrevista com Kent Beck sobre Extreme Programming (XP)</a></li>
<li><a href="http://twit.tv/floss88">Entrevista com Linus Torvalds, o criador do Linux e do Git</a></li>
<li><a href="http://twit.tv/floss79">Entrevista com David Heinemeier Hansson criador do Ruby On Rails</a></li>
<li><a href="http://twit.tv/floss73">Entrevista com Tim O&#8217;Reilly, fundador e CEO da  O&#8217;Reilly Media</a></li>
<li><a href="http://twit.tv/floss55">Entrevista com John Resig criador e líder do Projeto jQuery</a></li>
<li><a href="http://twit.tv/floss36">Entrevista com Jan Lehnardt evangelista do projeto CouchDB</a></li>
<li><a href="http://twit.tv/floss34">Entrevista com  Jacob Kaplan-Moss criador do Django</a></li>
<li><a href="http://twit.tv/floss33">Entrevista com Bruno Souza sobre o OpenJDK</a></li>
<li><a href="http://twit.tv/floss27">Entrevista com Ward Cunningham inventor do Wiki e grande Personalidade da Comunidade Ágil</a></li>
<li><a href="http://twit.tv/floss26">Entrevista com  D. Richard Hipp criador do SQLite</a></li>
<li><a href="http://twit.tv/floss23">Entrevista com Nate Koechley sobre o Yahoo User Interface Library (YUI)</a></li>
<li><a href="http://twit.tv/floss19">Entrevista com Junio Hamano, Mantenedor do Git</a></li>
<li><a href="http://twit.tv/floss12">Entrevista com Rasmus Lerdorf, criador do PHP</a></li>
<li><a href="http://twit.tv/floss11">Entrevista com Guido van Rossum, Criador do Python</a></li>
<li><a href="http://twit.tv/floss7">Entrevista com o fundador da Wikipedia, Jimmy Wales</a></li>
</ul>
<h2>Java</h2>
<div class="wp-caption aligncenter" style="width: 410px"><a href="http://www.flickr.com/photos/amloq/302981047/"><img class=" " title="HorecaExpo - Java por bramloquet" src="http://farm1.static.flickr.com/107/302981047_6e74b21ecb.jpg" alt="HorecaExpo - Java por bramloquet" width="400" height="300" /></a><p class="wp-caption-text">HorecaExpo - Java por bramloquet</p></div>
<h4>JavaPosse</h4>
<p><span style="font-weight:normal;">Por Tor Norbye, Carl Quinn, Dick Wall e Joe Nuxoll<br />
Inglês<br />
<a href="http://www.javaposse.com"> http://www.javaposse.com</a></span></p>
<h4>Java Technology Insider</h4>
<p><span style="font-weight:normal;">Inglês<br />
<a href="http://www.javaworld.com/podcasts/jtech/"> http://www.javaworld.com/podcasts/jtech</a></span></p>
<ul>
<li><a href="http://www.javaworld.com/podcasts/jtech/2008/100708jtech.html">Rod Johnson: SpringSource and the future of Spring (2008)</a></li>
</ul>
<h4>Grails Podcast</h4>
<p><span style="font-weight:normal;">Por Glen Smith e Sven Haiges<br />
<a href="http://grailspodcast.com"> http://grailspodcast.com</a></span></p>
<h2>Ruby</h2>
<div class="wp-caption aligncenter" style="width: 410px"><a href="http://www.flickr.com/photos/nez/177722693/"><img class=" " title="Ruby on Rails por Andrew*" src="http://farm1.static.flickr.com/74/177722693_8aca6c7e82.jpg" alt="Ruby on Rails por Andrew*" width="400" height="320" /></a><p class="wp-caption-text">Ruby on Rails por Andrew*</p></div>
<h4>Rails Envy</h4>
<p><span style="font-weight:normal;">Por Jason Seifer e Gregg Pollack<br />
Inglês<br />
<a href="http://railsenvy.com"> http://railsenvy.com</a></span></p>
<h4>Rails Podcast</h4>
<p><span style="font-weight:normal;">por Geoffrey Grosenbach<br />
Inglês<br />
<a href="http://podcast.rubyonrails.com/"> http://podcast.rubyonrails.com/</a></span></p>
<ul>
<li><a href="http://podcast.rubyonrails.com/programs/1/episodes/david_heinemeier_hansson">Entrevista com David Heinemeier Hansson (2005)</a></li>
<li><a href="http://podcast.rubyonrails.com/programs/1/episodes/dave_thomas">Entrevista com Dave Thomas (2005)</a></li>
<li><a href="http://podcast.rubyonrails.com/programs/1/episodes/chad_fowler">Entrevista com Chad Fowler (2005)</a></li>
<li><a href="http://podcast.rubyonrails.com/programs/1/episodes/obie_fernandez">Entrevista com Obie Fernandez (2006)</a></li>
<li><a href="http://podcast.rubyonrails.com/programs/1/episodes/dave_thomas_and_mike_clark">Entrevista com Dave Thomas e Mike Clark (2006)</a></li>
</ul>
<h4>Rubiverse Podcast</h4>
<p><span style="font-weight:normal;">Por Mike Moore<br />
Ingles<br />
<a href="http://rubiverse.com"> http://rubiverse.com</a></span></p>
<ul>
<li><a href="http://rubiverse.com/podcasts/8-dave-hoover-on-software-craftsmanship">Dave Hoover on Software Crafsmanship (2009)</a></li>
<li><a href="http://rubiverse.com/podcasts/6-obie-fernandez-on-rails-maturity-model">Obie Fernandez on the Rails Maturity Model (2009)</a></li>
<li><a href="http://rubiverse.com/podcasts/5-ola-bini-on-polyglot-programming">Ola Bini on Polyglot Programming (2008)</a></li>
</ul>
<h2>JavaScript</h2>
<h4>jQuery Podcast</h4>
<p><span style="font-weight:normal;">Português<br />
<a href="http://blog.jquery.com/2009/11/13/announcing-the-official-jquery-podcast/"> http://blog.jquery.com/2009/11/13/announcing-the-official-jquery-podcast/</a></span></p>
<h2>Gadgets</h2>
<h4>GeekBrief TV</h4>
<p><span style="font-weight:normal;">por Cali Lewis<br />
Inglês<br />
<a href="http://www.geekbrief.tv"> http://www.geekbrief.tv</a></span></p>
<h2>Software</h2>
<div class="wp-caption aligncenter" style="width: 410px"><a href="http://www.flickr.com/photos/gesteves/2103477382/"><img class=" " title="Desk por Guillermo Esteves" src="http://farm3.static.flickr.com/2134/2103477382_ddce67a270.jpg" alt="Desk por Guillermo Esteves" width="400" height="300" /></a><p class="wp-caption-text">Desk por Guillermo Esteves</p></div>
<h4>Pragmatic Podcasts</h4>
<p><span style="font-weight:normal;">por Pragmatic Bookshelf<br />
Inglês<br />
<a href="http://www.pragprog.com/podcasts"> http://www.pragprog.com/podcasts</a></span></p>
<ul>
<li><a href="http://www.pragprog.com/podcasts/show/26">Chad Fowler on the Passionate Programmer</a></li>
<li><a href="http://www.pragprog.com/podcasts/show/20">Fred Daoud on Stripes</a></li>
<li><a href="http://www.pragprog.com/podcasts/show/19">Chad Fowler Finding the Jagged Edges</a></li>
<li><a href="http://www.pragprog.com/podcasts/show/13">Andy Hunt on Pragmatic Wetware</a></li>
</ul>
<h4>Software Engineering Radio</h4>
<p><span style="font-weight:normal;">por Software Engineering Radio<br />
<a href="http://www.se-radio.net"> http://www.se-radio.net</a><br />
Inglês</span></p>
<ul>
<li><a href="http://www.se-radio.net/podcast/2009-11/episode-148-software-archaeology-dave-thomas">Software Archaelogy with Dame Thomas</a></li>
<li><a href="http://www.se-radio.net/podcast/2009-06/episode-139-fearless-change-linda-rising">Fearless Change with Linda Rising</a></li>
<li><a href="http://www.se-radio.net/podcast/2009-06/episode-138-learning-part-development-allan-kelly">Learning as a Part of Development with Allan Kelly</a></li>
<li><a href="http://www.se-radio.net/podcast/2009-06/episode-137-sql-jim-melton">SQL with Jim Melton</a></li>
<li><a href="http://www.se-radio.net/podcast/2009-04/episode-133-continuous-integration-chris-read">Continuous Integration with Chris Read</a></li>
<li><a href="http://www.se-radio.net/podcast/2009-04/episode-132-top-10-architecture-mistakes-eoin-woods">Top 10 Architecture Mistakes with Eoin Woods</a></li>
<li><a href="http://www.se-radio.net/podcast/2009-02/episode-127-usability-joachim-machate">Usability with Joachim Machate</a></li>
<li><a href="http://www.se-radio.net/podcast/2008-08/episode-106-introduction-aop">Introduction to AOP with Christa Schwanninger e Iris Groher</a></li>
<li><a href="http://www.se-radio.net/podcast/2008-07/episode-105-retrospectives-linda-rising">Retrospectives with Linda Rising</a></li>
<li><a href="http://www.se-radio.net/podcast/2008-07/episode-103-10-years-agile-experiences">10 years of Agile Experiences</a></li>
<li><a href="http://www.se-radio.net/podcast/2008-03/episode-89-joe-armstrong-erlang">Joe Armstrong on Erlang</a></li>
<li><a href="http://www.se-radio.net/podcast/2008-02/episode-86-interview-dave-thomas">Interview Dave Thomas</a></li>
<li><a href="http://www.se-radio.net/podcast/2008-01/episode-84-dick-gabriel-lisp">Dick Gabriel on Lisp</a></li>
<li><a href="http://www.se-radio.net/podcast/2008-01/episode-83-jeff-deluca-feature-driven-development">Jeff DeLuca on Feature Driven Development</a></li>
<li><a href="http://www.se-radio.net/podcast/2007-12/episode-81-interview-erich-gamma">Interview Erich Gamma</a></li>
<li><a href="http://www.se-radio.net/podcast/2007-10/episode-70-gerard-meszaros-xunit-test-patterns">Gerard Meszaros on XUnit Test Patterns</a></li>
<li><a href="http://www.se-radio.net/podcast/2007-06/episode-59-static-code-analysis">Static Code Analysis with Jonathan Aldrich</a></li>
<li><a href="http://www.se-radio.net/podcast/2007-02/episode-46-refactoring-pt-1">Refactoring Pt. 1</a></li>
<li><a href="http://www.se-radio.net/podcast/2007-05/episode-55-refactoring-pt-2">Refactoring Pt. 2</a></li>
<li><a href="http://www.se-radio.net/podcast/2006-11/episode-37-extreme-programming-pt-1">eXtreme Programming Pt.1</a></li>
<li><a href="http://www.se-radio.net/podcast/2007-01/episode-43-extreme-programming-pt2">eXtreme Programming Pt.2</a></li>
<li><a href="http://www.se-radio.net/podcast/2006-10/episode-31-agile-documentation">Agile Documentation</a></li>
<li><a href="http://www.se-radio.net/podcast/2006-08/episode-26-interview-jutta-eckstein">Interview Jutta Eckstein</a></li>
<li><a href="http://www.se-radio.net/podcast/2006-03/episode-8-interview-eric-evans">Interview Eric Evans</a></li>
<li><a href="http://www.se-radio.net/podcast/2006-01/episode-1-patterns">Patterns</a></li>
</ul>
<h4>Elegant Code</h4>
<p><span style="font-weight:normal;">por Elegant Code Community<br />
<a href="http://elegantcode.com"> http://elegantcode.com</a><br />
Inglês</span></p>
<ul>
<li><a href="http://elegantcode.com/2009/08/31/code-cast-31-agile-for-families">Agile for Families</a></li>
<li><a href="http://elegantcode.com/2009/07/23/code-cast-28-jim-wierich">Entrevista com Jim Wierich o Criador do Rake (Ruby)</a></li>
<li><a href="http://elegantcode.com/2008/12/12/code-cast-17-david-laribee-on-lean-kanban">David Laribee on Lean / Kanban</a></li>
<li><a href="http://elegantcode.com/2008/09/30/cast-cast-15-uncle-bob-martin/">Uncle Bob Martin on Clean Code</a></li>
<li><a href="http://elegantcode.com/2008/08/27/code-cast-12-alan-shalloway/">Alan Shalloway on Lean</a></li>
<li><a href="http://elegantcode.com/2008/05/13/elegant-code-cast-8-is-online/">Entrevista com Jarod Ferguson</a></li>
<li><a href="http://elegantcode.com/2008/03/30/elegant-code-cast-6-is-up/">Entrevista com Darrel Carver</a></li>
<li><a href="http://elegantcode.com/2008/03/02/elegant-code-cast-4-is-up/">Entrevista com Scott Nichols</a></li>
<li><a href="http://elegantcode.com/2008/01/13/elegant-code-cast-2-online/">Entrevista com Scott Schimanski</a></li>
</ul>
<h4>Google Developer Podcast</h4>
<p><span style="font-weight:normal;"><a href="http://code.google.com/p/google-developer-podcast/downloads/list">http://code.google.com/p/google-developer-podcast/downloads/list</a><br />
Inglês</span></p>
<h4>Hearding Code</h4>
<p><span style="font-weight:normal;"><a href="http://herdingcode.com">http://herdingcode.com</a><br />
Inglês</span></p>
<h2>Tecnologia</h2>
<h4>IT Conversations</h4>
<p><span style="font-weight:normal;"><a href="http://itc.conversationsnetwork.org">http://itc.conversationsnetwork.org</a><br />
Inglês</span></p>
<h4>net@Night</h4>
<p><span style="font-weight:normal;">por Amber MacArthur e Leo Laport<br />
<a href="http://www.twit.tv/natn"> http://www.twit.tv/natn</a></span></p>
<h4>Twit &#8211; This Week in Tech</h4>
<p><span style="font-weight:normal;">por  Leo Laporte, Jeff Jarvis, Baratunde Thurston, e John C. Dvorak<br />
<a href="http://www.twit.tv/twit"> http://www.twit.tv/twit</a></span></p>
<h4>MacBreak Weekly</h4>
<p><span style="font-weight:normal;">por Leo Laporte, Don McAllister, Paul Kent, and Andy Ihnatko<br />
<a href="http://www.twit.tv/mbw"> http://www.twit.tv/mbw</a></span></p>
<h4>This Week in Google</h4>
<p><span style="font-weight:normal;">por Leo Laporte, Gina Trapani, Jeff Jarvis e Mary Hodder<br />
<a href="http://www.twit.tv/twig"> http://www.twit.tv/twig</a></span></p>
<h4>SitePoint Podcast</h4>
<p><span style="font-weight:normal;">inglês<br />
<a href="http://www.sitepoint.com/podcast"> http://www.sitepoint.com/podcast </a></span></p>
<h2>Empreendedorismo e Negócios</h2>
<h4>37 Signals Podcast</h4>
<p><span style="font-weight:normal;">por 37 Signals<br />
Inglês<br />
<a href="http://37signals.com/podcast"> http://37signals.com/podcast</a></span></p>
<h4>Max Gehringer (CBN)</h4>
<p><span style="font-weight:normal;">por Max Gehringer<br />
Português<br />
<a href="http://cbn.globoradio.globo.com/servicos/podcast/NOME.htm"> http://cbn.globoradio.globo.com/servicos/podcast/NOME.htm</a></span></p>
<h4>Mundo Corporativo (CBN)</h4>
<p><span style="font-weight:normal;">por Heródoto Barbeiro<br />
Português em Áudio<br />
<a href="http://cbn.globoradio.globo.com/servicos/podcast/NOME.htm"> http://cbn.globoradio.globo.com/servicos/podcast/NOME.htm</a></span></p>
<h4>The Startup Success Podcast</h4>
<p><span style="font-weight:normal;"><a href="http://startuppodcast.wordpress.com">http://startuppodcast.wordpress.com</a><br />
Inglês</span></p>
<h4>TED Talks</h4>
<p><span style="font-weight:normal;">por TED Talks<br />
Inglês<br />
<a href="http://www.ted.com"> http://www.ted.com</a></span></p>
<p>Se você quiser incluir algum outro podcast nesta lista, deixe um comentário. Espero que seja Útil!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Five things I like and dislike about technology meme]]></title>
<link>http://felinophile.wordpress.com/2009/11/19/five-things-i-like-and-dislike-about-technology-meme/</link>
<pubDate>Thu, 19 Nov 2009 12:08:28 +0000</pubDate>
<dc:creator>Ace</dc:creator>
<guid>http://felinophile.wordpress.com/2009/11/19/five-things-i-like-and-dislike-about-technology-meme/</guid>
<description><![CDATA[I got this idea from Belle de Jour&#8217;s blog. It seemed cool enough, so yeah. The meme evolves in]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I got this idea from <a href="http://belledejour-uk.blogspot.com/" target="_blank">Belle de Jour&#8217;s</a> blog. It seemed cool enough, so yeah. The meme evolves into a new form. (She still uses Blogspot, bless her. I left that one half a decade ago. WordPress is way more awesome. *totally unnecessary plug*)</p>
<p>I can&#8217;t believe I&#8217;m going to try to limit it to five things I like, since I am a Certified Geek Girl (I object to the term &#8216;chick,&#8217; for philosophical reasons) and have a peculiar affinity to tech. Anyway:</p>
<p>&#160;</p>
<p><strong>Five things I dislike about technology:</strong></p>
<ul>
<li><strong>LISP dialect: Scheme.</strong> Programming language from hell, aka the Final Straw That Finally Made Me Quit Trying To Study I.T. as a Career. (Computers are fun as a hobby, but not as a life choice.)  Oh, how I hate it. It&#8217;s a monster. More specific, language-based languages like Basic are okay, but Scheme? It&#8217;s over thirty years old, and it is nothing like the current languages. Sure, it&#8217;s dynamic and easy to use if you can grasp it, and no one wants a repeat of some of the Y2K problems, but it&#8217;s a horrendous thing to inflict on a first year IT student. The class had a 70-80% fail rate. I&#8217;ve more or less quit ranting about it by now &#8211; it&#8217;s been, like, four years &#8211; but I still hate it passionately.</li>
<li><strong>The fact that on the web, nothing is private and nobody is truly anonymous.</strong> If you&#8217;re skilled enough, you can grab important, basic details about people and use them against them. It&#8217;s not especially hard. I find that scary, and it&#8217;s only going to get worse.</li>
<li><strong>There&#8217;s so much junk clogging the net and obscuring the awesome stuff. </strong></li>
<li><strong>The technology is beginning to evolve faster than I am. </strong>I used to keep up with its changes effortlessly, but since computer-geekery became a hobby instead of a way of life, I&#8217;ve lost a little bit of my instant adaptability. I actually passed up the opportunity to get a new phone to replace my years-old chunky one because I tohught the new ones were a bit fussy. (Of course, that decision lasted only until I saw the Sony Walkman phone. Instant tech lust.)</li>
<li><strong>That the truly awesome stuff costs more money than  have.</strong></li>
</ul>
<p><strong> </strong></p>
<p><strong>Five things I like about technology:</strong></p>
<ul>
<li><strong>The internet. </strong>My life would be an empty, sad shell without the internet. I use it to connect with people, and I use it constantly to learn. I am on a never-ending quest to learn new things, and the internet&#8217;s like the never ending bag of Unexpected Awesomeness. You get a lot of unexpected totally-uncoolness, but hey, you gotta take the bad with the good.</li>
<li><strong>My mp3 player.</strong> Music I can take with me! And it&#8217;s so easy to use, and to carry around!</li>
<li><strong>Lego Batman, Star Wars:Racer and Sonic the Hedgehog</strong>. Because they rock the casbah.</li>
<li><strong>It makes life more complicated, but also more interesting</strong>. I read a thing by a scientist where he asserted that through the constant pressure to adapt to new technologies that we are putting ourselves through, we are actually putting great evolutionary pressure upon ourselves and are forcing ourselves to evolve more quickly. I don&#8217;t know if it&#8217;s true, but it helps life stop getting stale and unchanging.</li>
<li><strong>Man, does it help with uni work! </strong>I can just download lecture notes, enroll online, spare my lecturers my infamous handwriting&#8230;</li>
</ul>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Structure and Interpretation of Computer Programs ]]></title>
<link>http://alwayspirit.wordpress.com/2009/11/18/structure-and-interpretation-of-computer-programs/</link>
<pubDate>Wed, 18 Nov 2009 16:50:32 +0000</pubDate>
<dc:creator>alwayspirit</dc:creator>
<guid>http://alwayspirit.wordpress.com/2009/11/18/structure-and-interpretation-of-computer-programs/</guid>
<description><![CDATA[When I started to learn Lisp by myself, I found there are many books mentioned and recommended  by p]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>When I started to learn Lisp by myself, I found there are many books mentioned and recommended  by people on the internet.</p>
<p>One is Practical Common Lisp.And the other one is Structure and Interpretation of Computer Programs.</p>
<p>Today, I read a review on SICP by Peter Norvig.</p>
<p>It is really worthy of reading.So, I post the site address here.</p>
<p><a href="http://www.amazon.com/review/R403HR4VL71K8?ie=UTF8&#38;*Version*=1&#38;*entries*=0">http://www.amazon.com/review/R403HR4VL71K8?ie=UTF8&#38;*Version*=1&#38;*entries*=0</a></p>
<p>Hope someone who is interested in learning Lisp will think this  helpful.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SICP Exercise 4.19]]></title>
<link>http://wqzhang.wordpress.com/2009/11/13/sicp-exercise-4-19/</link>
<pubDate>Sat, 14 Nov 2009 03:50:44 +0000</pubDate>
<dc:creator>Weiqun</dc:creator>
<guid>http://wqzhang.wordpress.com/2009/11/13/sicp-exercise-4-19/</guid>
<description><![CDATA[SICP Exercise 4.19 I read the footnote of this exercise before I thought about this carefully. So I ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-26.html#%_thm_4.19">SICP Exercise 4.19</a></p>
<p>I read the footnote of this exercise before I thought about this carefully.  So I already knew the opinion of the authors of SICP.  I guess they were right that it would be very hard to implement Eva&#8217;s view.  The order of internal definitions has to been carefully rearranged.  In the example, the definition of <code>a</code> should appear before that of <code>b</code> because <code>b</code> depends on <code>a</code>.</p>
<p>As for Ben&#8217;s view, his approach would make the language much less powerful.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SICP Exercise 4.18]]></title>
<link>http://wqzhang.wordpress.com/2009/11/13/sicp-exercise-4-18/</link>
<pubDate>Sat, 14 Nov 2009 03:48:14 +0000</pubDate>
<dc:creator>Weiqun</dc:creator>
<guid>http://wqzhang.wordpress.com/2009/11/13/sicp-exercise-4-18/</guid>
<description><![CDATA[SICP Exercise 4.18 Using the alternative strategy in this exercise for scanning out definitions, the]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-26.html#%_thm_4.18">SICP Exercise 4.18</a></p>
<p>Using the alternative strategy in this exercise for scanning out definitions, the <code>solve</code> procedure becomes</p>
<pre class="wqz-code">
(<span class="scheme-keyword">define</span> (<span class="scheme-function-name">solve</span> f y0 dt)
  (<span class="scheme-keyword">let</span> ((y '*unassigned*)
        (dy '*unassigned*))
    (<span class="scheme-keyword">let</span> ((a (integral (<span class="scheme-keyword">delay</span> dy) y0 dt))
          (b (stream-map f y)))
      (set! y a)
      (set! dy b))
    y))
</pre>
<p>Then converting the inner <code>let</code> to a lambda function gives</p>
<pre class="wqz-code">
(<span class="scheme-keyword">define</span> (<span class="scheme-function-name">solve</span> f y0 dt)
  (<span class="scheme-keyword">let</span> ((y '*unassigned*)
        (dy '*unassigned*))
    ((<span class="scheme-keyword">lambda</span> (a b)
       (set! y a)
       (set dy b))
     (integral (<span class="scheme-keyword">delay</span> dy) y0 dt)
     (stream-map f y))
    y))
</pre>
<p>We can see that this approach does not work because the evaluation of the second argument to the lambda function <code>(stream-map f y)</code> uses <code>y</code>, which is still <code>*unassigned*</code> at that time.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SICP Exercise 4.17]]></title>
<link>http://wqzhang.wordpress.com/2009/11/13/sicp-exercise-4-17/</link>
<pubDate>Sat, 14 Nov 2009 03:43:53 +0000</pubDate>
<dc:creator>Weiqun</dc:creator>
<guid>http://wqzhang.wordpress.com/2009/11/13/sicp-exercise-4-17/</guid>
<description><![CDATA[SICP Exercise 4.17 There is an extra frame in the transformed program because let will be converted ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a href="http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-26.html#%_thm_4.17">SICP Exercise 4.17</a></p>
<p>There is an extra frame in the transformed program because <code>let</code> will be converted to a call to a lambda function.  Since that is the only difference, it is obvious that this difference should not make any difference in the behavior of a correct program.</p>
<p>To make the interpreter implement the &#8220;simultaneous&#8221; scope rule for internal definitions without constructing the extra frame, we can rearrange the order of the procedure body making sure internal definitions always appear before being called.</p>
<pre class="wqz-code">
(<span class="scheme-keyword">define</span> (<span class="scheme-function-name">rearrange-defines</span> body)
  (<span class="scheme-keyword">let</span> ((defs '())
        (others '()))
    (<span class="scheme-keyword">let</span> <span class="scheme-function-name">scan-iter</span> ((b body))
      (<span class="scheme-keyword">cond</span> ((null? b)
             '())
            ((definition? (car b))
             (set! defs (append defs (list (car b)))))
            (<span class="scheme-keyword">else</span>
             (set! others (append others (list (car b))))))
      (<span class="scheme-keyword">if</span> (not (null? b))
          (scan-iter (cdr b))))
    (<span class="scheme-keyword">if</span> (null? defs)
        body
        (append defs others))))

(<span class="scheme-keyword">define</span> (<span class="scheme-function-name">make-procedure</span> parameters body env)
  (list 'procedure parameters (rearrange-defines body) env))
</pre>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Considering Adding a Functional Language to My Bag of Tricks]]></title>
<link>http://goldmanalpha.wordpress.com/2009/11/13/functionallanguage/</link>
<pubDate>Fri, 13 Nov 2009 16:51:42 +0000</pubDate>
<dc:creator>goldmanalpha</dc:creator>
<guid>http://goldmanalpha.wordpress.com/2009/11/13/functionallanguage/</guid>
<description><![CDATA[There are a lot of people @Lab who know things like Erlang, Haskell, Python, R, etc., etc., etc.  I]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>There are a lot of people <a href="http://www.lab49.com/" target="_blank">@Lab</a> who know things like <a href="http://www.erlang.org/index.html" target="_blank">Erlang</a>, <a href="http://www.haskell.org/" target="_blank">Haskell</a>, <a href="http://www.python.org/" target="_blank">Python</a>, <a href="http://www.r-project.org/" target="_blank">R</a>, etc., etc., etc.  I&#8217;m actually considering learning <a href="http://en.wikiquote.org/wiki/Lisp_programming_language">Lisp</a>, but I need a project.  I &#8220;learned&#8221; <a href="http://www.sitepoint.com/forums/showthread.php?t=155043" target="_blank">php</a> for a project over the summer, but I didn&#8217;t really like it since its so much like classic ASP (really messy).  Maybe I&#8217;ll learn <a href="http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/" target="_blank">F#</a> instead&#8230;  That shouldn&#8217;t be such a strech since I built an <a href="http://www.csis.pace.edu/%7Ebergin/compiler/CompilerAward.html">ML compiler</a> in grad school (F# is based on ML).  I wonder what kind of project I’d be interested in would benefit from a functional language&#8230;  I suppose I’ll have to read up on the language and maybe that will give me some ideas.</p>
<p>Its funny, doing WPF, my umpteenth technology, is just not enough.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Policy Compliance Engineer (San Francisco, CA • Redwood City, CA)]]></title>
<link>http://lispjobs.wordpress.com/2009/11/12/policy-compliance-engineer-san-francisco-ca-%e2%80%a2-redwood-city-ca/</link>
<pubDate>Thu, 12 Nov 2009 18:53:02 +0000</pubDate>
<dc:creator>halmonster</dc:creator>
<guid>http://lispjobs.wordpress.com/2009/11/12/policy-compliance-engineer-san-francisco-ca-%e2%80%a2-redwood-city-ca/</guid>
<description><![CDATA[Qualys, Inc. is looking for a Policy Compliance Engineer who can research and write new capabilities]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Qualys, Inc. is looking for a <a href="http://hotjobs.yahoo.com/job-JIZTGSI7RFM;_ylc=X3oDMTEwNjBmMXIxBF9TAzM5NjUxMDMzNQRjYXQDTUlTBHBjb2RlAzUwNTg0?source=partner&#38;scode=50584">Policy Compliance Engineer</a> who can research and write new capabilities in the form of LISP/QScheme functions to support signature development efforts.</p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
