<rss version="2.0">
  <channel>
    <title>Kotka</title>
    <link>http://kotka.de/blog/index.html</link>
    <description>About Clojure… What else?</description>
    <language>en</language>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>Azrael/0.0.1</generator>

    <item>
      <title>Did you know about type hints?</title>
      <pubDate>Tue, 26 Jun 2012 01:09:24 +0200</pubDate>
      <link>http://kotka.de/blog/2012/06/Did_you_know_IX.html</link>
      <guid isPermaLink="true">http://kotka.de/blog/2012/06/Did_you_know_IX.html</guid>
      <description>&lt;p&gt;Did you know, you don't need type hints? No! Really! You
don't need them. There is only one situation where you
&lt;code&gt;might&lt;/code&gt; need them: on call sites for host interop.&lt;/p&gt;

</description>
    </item><item>
      <title>A field trip into logic programming</title>
      <pubDate>Thu, 20 Oct 2011 00:08:00 +0200</pubDate>
      <link>http://kotka.de/blog/2011/10/A_field_trip_into_logic_programming.html</link>
      <guid isPermaLink="true">http://kotka.de/blog/2011/10/A_field_trip_into_logic_programming.html</guid>
      <description>&lt;p&gt;Chris Houser got his &lt;a href="http://www.4clojure.com/problem/130"&gt;first problem&lt;/a&gt; accepted at &lt;a href="http://www.4clojure.com"&gt;4clojure&lt;/a&gt;.
I decided to give &lt;a href="https://github.com/clojure/core.logic"&gt;core.logic&lt;/a&gt; a try—David Nolen's awesome logic
programming framework for Clojure. And surprisingly I ended up with a
working solution.&lt;/p&gt;

</description>
    </item><item>
      <title>Separation of Concerns</title>
      <pubDate>Thu, 07 Jul 2011 23:23:00 +0200</pubDate>
      <link>http://kotka.de/blog/2011/07/Separation_of_concerns.html</link>
      <guid isPermaLink="true">http://kotka.de/blog/2011/07/Separation_of_concerns.html</guid>
      <description>&lt;p&gt;“&lt;a href="https://groups.google.com/d/msg/clojure/YwhOGCWquIM/bLC1YYGxe8MJ"&gt;Recent wisdom&lt;/a&gt;” has it, that protocol functions should be a low-level
interface. Of course I didn't go with this statement in my ignorance.
Luckily there is always a &lt;a href="http://clj-me.cgrand.net"&gt;Christophe&lt;/a&gt; around to enlighten me.&lt;/p&gt;

&lt;p&gt;This wisdom actually isn't “recent.” It is quite old and you can find it
in many object-oriented language libraries. And as one additional level
of indirection solves every problem, this boils down to the &lt;em&gt;one&lt;/em&gt; cause
of bad design: lack of separation of concerns.&lt;/p&gt;

</description>
    </item><item>
      <title>On Types</title>
      <pubDate>Thu, 09 Jun 2011 00:38:00 +0200</pubDate>
      <link>http://kotka.de/blog/2011/06/On_types.html</link>
      <guid isPermaLink="true">http://kotka.de/blog/2011/06/On_types.html</guid>
      <description>&lt;p&gt;Being dynamically typed doesn't mean that there are no types.
And in fact, pretending that there are no types gives raise
to a number of problems, like unclear semantics of a function
and such.&lt;/p&gt;

&lt;p&gt;Let's explore an example from the heart of Clojure.&lt;/p&gt;

</description>
    </item><item>
      <title>Beauty in a bug?</title>
      <pubDate>Thu, 07 Apr 2011 18:45:00 +0200</pubDate>
      <link>http://kotka.de/blog/2011/04/Beauty_in_a_bug.html</link>
      <guid isPermaLink="true">http://kotka.de/blog/2011/04/Beauty_in_a_bug.html</guid>
      <description>&lt;p&gt;I must confess that I haven't checked who provided the core
implementation of &lt;code&gt;partition-by&lt;/code&gt; (presumably Rich). But
whoever it was: he clearly knows what he's doing.&lt;/p&gt;

&lt;p&gt;However there is still a bug spoiling the show a little bit.
The investigations lead us directly to the basic question of
how &lt;code&gt;partition-by&lt;/code&gt; should behave.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>