<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
<channel>
	<title>Comments for Finalist Developers Blog</title>
	
	<link>http://blog.finalist.com</link>
	<description>Nederlandse blog over software ontwikkeling</description>
	<lastBuildDate>Mon, 16 Aug 2010 11:03:56 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/CommentsFinalistDevelopersBlog" /><feedburner:info uri="commentsfinalistdevelopersblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Comment on Ruby on Rails 3: Een voorbeschouwing by Tweets that mention Ruby on Rails 3: Een voorbeschouwing | Finalist Developers Blog -- Topsy.com</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/Hpo1AiGjIgI/</link>
		<dc:creator>Tweets that mention Ruby on Rails 3: Een voorbeschouwing | Finalist Developers Blog -- Topsy.com</dc:creator>
		<pubDate>Mon, 16 Aug 2010 11:03:56 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1909#comment-37397</guid>
		<description>[...] This post was mentioned on Twitter by Iain, Died and Peter de Ruijter, Finalist IT Group. Finalist IT Group said: new blogpost: Ruby on Rails 3: Een voorbeschouwing http://bit.ly/9pBl15 #ruby [...]</description>
		<content:encoded><![CDATA[<p>[...] This post was mentioned on Twitter by Iain, Died and Peter de Ruijter, Finalist IT Group. Finalist IT Group said: new blogpost: Ruby on Rails 3: Een voorbeschouwing <a href="http://bit.ly/9pBl15" rel="nofollow">http://bit.ly/9pBl15</a> #ruby [...]</p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/Hpo1AiGjIgI" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/08/16/ruby-on-rails-3-een-voorbeschouwing/comment-page-1/#comment-37397</feedburner:origLink></item>
	<item>
		<title>Comment on Bundler en RVM by Ruby on Rails 3: Een voorbeschouwing | Finalist Developers Blog</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/L1Ca8czsui0/</link>
		<dc:creator>Ruby on Rails 3: Een voorbeschouwing | Finalist Developers Blog</dc:creator>
		<pubDate>Mon, 16 Aug 2010 10:05:07 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1869#comment-37395</guid>
		<description>[...] 3 komt met de nieuwe dependency manager Bundler, waar ik vorige keer al over schreef. Daarbij is er in Rails 3 ook een plugin API waardoor het extra makkelijk is voor plugins om in te [...]</description>
		<content:encoded><![CDATA[<p>[...] 3 komt met de nieuwe dependency manager Bundler, waar ik vorige keer al over schreef. Daarbij is er in Rails 3 ook een plugin API waardoor het extra makkelijk is voor plugins om in te [...]</p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/L1Ca8czsui0" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/07/27/bundler-en-rvm/comment-page-1/#comment-37395</feedburner:origLink></item>
	<item>
		<title>Comment on JUnit testen van EJB3/JPA code met een in memory database by Marco Rietveld</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/TQDde58rfr8/</link>
		<dc:creator>Marco Rietveld</dc:creator>
		<pubDate>Fri, 13 Aug 2010 09:12:20 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=448#comment-37295</guid>
		<description>Mooie post!

Trouwens, in plaats van een setEntityManager() methode aan je EJB/DAO toe te moeten voeten, zou je ook zelf de EntityManager kunnen "injecteren" in je testclasses, bij voorbeeld met de onderstaande methodes. 

(Dit is min of meer hoe het trouwens ook gedaan word in de container/via de annotaties)

&lt;code&gt;
    public static boolean setEntityManager(Object daoBean, EntityManager entityManager) {
        boolean fieldSet = true;

        // Retrieve field
        Class objectClass = daoBean.getClass().getSuperclass();
        Field emField = getField(objectClass, entityManagerfieldName);

        if( emField == null ) {
            objectClass = daoBean.getClass();
            emField = getField(objectClass, entityManagerfieldName);
        }

        // Set field
        if( emField != null ) {
            setField(emField, daoBean, entityManager);
        }
        else {
            fieldSet = false;
            logger.warn(entityManagerfieldName + " field is null!" );
        }
        return fieldSet;
    }

    private static Field getField(Class objectClass, String fieldName) {
        Field field = null;
        try {
            field = objectClass.getDeclaredField(fieldName);
        }
        catch(Exception e ) {
            logger.warn("Unable to retrieve '" + fieldName + "' field on " + objectClass.getSimpleName()
                + ": [" + e.getClass().getSimpleName() + ": " + e.getMessage() + "]");
        }
        return field;
    }

    private static boolean setField(Field field, Object fieldObject, Object fieldValue) {
        boolean fieldSet = false;
        field.setAccessible(true);

        try {
            field.set(fieldObject, fieldValue);
            fieldSet = true;
        }
        catch(Exception e) {
            logger.warn("Unable to set field '" + field.getName() + "' on " + fieldObject.getClass().getSimpleName()
                + ": [" + e.getClass().getSimpleName() + ": " + e.getMessage() + "]");
        }
        return fieldSet;
    }&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p>Mooie post!</p>
<p>Trouwens, in plaats van een setEntityManager() methode aan je EJB/DAO toe te moeten voeten, zou je ook zelf de EntityManager kunnen &#8220;injecteren&#8221; in je testclasses, bij voorbeeld met de onderstaande methodes. </p>
<p>(Dit is min of meer hoe het trouwens ook gedaan word in de container/via de annotaties)</p>
<p><code><br />
    public static boolean setEntityManager(Object daoBean, EntityManager entityManager) {<br />
        boolean fieldSet = true;</p>
<p>        // Retrieve field<br />
        Class objectClass = daoBean.getClass().getSuperclass();<br />
        Field emField = getField(objectClass, entityManagerfieldName);</p>
<p>        if( emField == null ) {<br />
            objectClass = daoBean.getClass();<br />
            emField = getField(objectClass, entityManagerfieldName);<br />
        }</p>
<p>        // Set field<br />
        if( emField != null ) {<br />
            setField(emField, daoBean, entityManager);<br />
        }<br />
        else {<br />
            fieldSet = false;<br />
            logger.warn(entityManagerfieldName + " field is null!" );<br />
        }<br />
        return fieldSet;<br />
    }</p>
<p>    private static Field getField(Class objectClass, String fieldName) {<br />
        Field field = null;<br />
        try {<br />
            field = objectClass.getDeclaredField(fieldName);<br />
        }<br />
        catch(Exception e ) {<br />
            logger.warn("Unable to retrieve '" + fieldName + "' field on " + objectClass.getSimpleName()<br />
                + ": [" + e.getClass().getSimpleName() + ": " + e.getMessage() + "]");<br />
        }<br />
        return field;<br />
    }</p>
<p>    private static boolean setField(Field field, Object fieldObject, Object fieldValue) {<br />
        boolean fieldSet = false;<br />
        field.setAccessible(true);</p>
<p>        try {<br />
            field.set(fieldObject, fieldValue);<br />
            fieldSet = true;<br />
        }<br />
        catch(Exception e) {<br />
            logger.warn("Unable to set field '" + field.getName() + "' on " + fieldObject.getClass().getSimpleName()<br />
                + ": [" + e.getClass().getSimpleName() + ": " + e.getMessage() + "]");<br />
        }<br />
        return fieldSet;<br />
    }</code></p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/TQDde58rfr8" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2009/05/18/junit-testen-van-ejb3jpa-code-met-een-in-memory-database/comment-page-1/#comment-37295</feedburner:origLink></item>
	<item>
		<title>Comment on Bundler en RVM by Iain Hecker</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/_zO03jNgv-o/</link>
		<dc:creator>Iain Hecker</dc:creator>
		<pubDate>Thu, 29 Jul 2010 09:42:48 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1869#comment-36606</guid>
		<description>op de mac gebruik ik homebrew ipv macports: veel beter! maar apt blijft de beste natuurlijk :)</description>
		<content:encoded><![CDATA[<p>op de mac gebruik ik homebrew ipv macports: veel beter! maar apt blijft de beste natuurlijk <img src='http://blog.finalist.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/_zO03jNgv-o" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/07/27/bundler-en-rvm/comment-page-1/#comment-36606</feedburner:origLink></item>
	<item>
		<title>Comment on Bundler en RVM by altovista</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/bw6sBWCqyHM/</link>
		<dc:creator>altovista</dc:creator>
		<pubDate>Thu, 29 Jul 2010 06:51:07 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1869#comment-36601</guid>
		<description>Zie ik die Ruby tag nou steeds groter worden? ;) Leuke post. Ik word zelf ook heel erg blij van Bundler + RVM. Nooit meer dat gedoe met MacPorts o.i.d. (of beter... ik had gewoon Ubuntu moeten blijven gebruiken...)</description>
		<content:encoded><![CDATA[<p>Zie ik die Ruby tag nou steeds groter worden? <img src='http://blog.finalist.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Leuke post. Ik word zelf ook heel erg blij van Bundler + RVM. Nooit meer dat gedoe met MacPorts o.i.d. (of beter&#8230; ik had gewoon Ubuntu moeten blijven gebruiken&#8230;)</p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/bw6sBWCqyHM" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/07/27/bundler-en-rvm/comment-page-1/#comment-36601</feedburner:origLink></item>
	<item>
		<title>Comment on DSL’s en Ruby by Stefan Borsje</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/xFJpsxaDfMU/</link>
		<dc:creator>Stefan Borsje</dc:creator>
		<pubDate>Wed, 28 Jul 2010 12:18:10 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1828#comment-36560</guid>
		<description>Mocht je voor het 'DRYen' van je view code op zoek zijn naar een DSL, dan is dit ook nog een mooie optie: http://github.com/markevans/block_helpers</description>
		<content:encoded><![CDATA[<p>Mocht je voor het &#8216;DRYen&#8217; van je view code op zoek zijn naar een DSL, dan is dit ook nog een mooie optie: <a href="http://github.com/markevans/block_helpers" rel="nofollow">http://github.com/markevans/block_helpers</a></p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/xFJpsxaDfMU" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/07/23/dsls-en-ruby/comment-page-1/#comment-36560</feedburner:origLink></item>
	<item>
		<title>Comment on Bundler en RVM by Tweets that mention Bundler en RVM | Finalist Developers Blog -- Topsy.com</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/3CBA8D02Xhw/</link>
		<dc:creator>Tweets that mention Bundler en RVM | Finalist Developers Blog -- Topsy.com</dc:creator>
		<pubDate>Tue, 27 Jul 2010 08:05:16 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1869#comment-36512</guid>
		<description>[...] This post was mentioned on Twitter by Iain, ariekanarie. ariekanarie said: Op het Finalist blog legt @iain_nl uit waarom Bundler en RVM heersen: http://bit.ly/cGuypV [...]</description>
		<content:encoded><![CDATA[<p>[...] This post was mentioned on Twitter by Iain, ariekanarie. ariekanarie said: Op het Finalist blog legt @iain_nl uit waarom Bundler en RVM heersen: <a href="http://bit.ly/cGuypV" rel="nofollow">http://bit.ly/cGuypV</a> [...]</p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/3CBA8D02Xhw" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/07/27/bundler-en-rvm/comment-page-1/#comment-36512</feedburner:origLink></item>
	<item>
		<title>Comment on Bundler en RVM by Tweets that mention Bundler en RVM | Finalist Developers Blog -- Topsy.com</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/4x2YJCpfRl4/</link>
		<dc:creator>Tweets that mention Bundler en RVM | Finalist Developers Blog -- Topsy.com</dc:creator>
		<pubDate>Tue, 27 Jul 2010 07:57:37 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1869#comment-36511</guid>
		<description>[...] This post was mentioned on Twitter by Jeroen Knoops and Marcel, Finalist IT Group. Finalist IT Group said: new blogpost: Bundler en RVM door @iain_nl http://bit.ly/cdzTOK #ruby [...]</description>
		<content:encoded><![CDATA[<p>[...] This post was mentioned on Twitter by Jeroen Knoops and Marcel, Finalist IT Group. Finalist IT Group said: new blogpost: Bundler en RVM door @iain_nl <a href="http://bit.ly/cdzTOK" rel="nofollow">http://bit.ly/cdzTOK</a> #ruby [...]</p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/4x2YJCpfRl4" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/07/27/bundler-en-rvm/comment-page-1/#comment-36511</feedburner:origLink></item>
	<item>
		<title>Comment on DSL’s en Ruby by Tweets that mention DSL’s en Ruby | Finalist Developers Blog -- Topsy.com</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/nCfdJ0YKyYc/</link>
		<dc:creator>Tweets that mention DSL’s en Ruby | Finalist Developers Blog -- Topsy.com</dc:creator>
		<pubDate>Fri, 23 Jul 2010 08:57:56 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1828#comment-36395</guid>
		<description>[...] This post was mentioned on Twitter by Finalist IT Group, Died. Died said: I wrote a blog post about Ruby and DSL's http://bit.ly/c3mbVX It is in dutch btw ;) [...]</description>
		<content:encoded><![CDATA[<p>[...] This post was mentioned on Twitter by Finalist IT Group, Died. Died said: I wrote a blog post about Ruby and DSL&#39;s <a href="http://bit.ly/c3mbVX" rel="nofollow">http://bit.ly/c3mbVX</a> It is in dutch btw <img src='http://blog.finalist.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  [...]</p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/nCfdJ0YKyYc" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/07/23/dsls-en-ruby/comment-page-1/#comment-36395</feedburner:origLink></item>
	<item>
		<title>Comment on Magie met Modules by DSL’s en Ruby | Finalist Developers Blog</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/l5F3E0FV1us/</link>
		<dc:creator>DSL’s en Ruby | Finalist Developers Blog</dc:creator>
		<pubDate>Fri, 23 Jul 2010 07:58:30 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=852#comment-36393</guid>
		<description>[...] Als je niet precies weet wat mixin’s in Ruby zijn, lees er dan meer over in de blogpost van Iain Hecker over mixins: blog.finalist.com/2009/07/13/magie-met-modules/#more-852 [...]</description>
		<content:encoded><![CDATA[<p>[...] Als je niet precies weet wat mixin&#8217;s in Ruby zijn, lees er dan meer over in de blogpost van Iain Hecker over mixins: blog.finalist.com/2009/07/13/magie-met-modules/#more-852 [...]</p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/l5F3E0FV1us" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2009/07/13/magie-met-modules/comment-page-1/#comment-36393</feedburner:origLink></item>
	<item>
		<title>Comment on En toen was er &lt;canvas&gt; by Lennaert</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/FNYJK1jjTz4/</link>
		<dc:creator>Lennaert</dc:creator>
		<pubDate>Wed, 30 Jun 2010 22:04:46 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1774#comment-35454</guid>
		<description>In de Mozilla Developer Center is ook een mooie tutorial te vinden, zie https://developer.mozilla.org/en/canvas_tutorial</description>
		<content:encoded><![CDATA[<p>In de Mozilla Developer Center is ook een mooie tutorial te vinden, zie <a href="https://developer.mozilla.org/en/canvas_tutorial" rel="nofollow">https://developer.mozilla.org/en/canvas_tutorial</a></p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/FNYJK1jjTz4" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/06/28/en-toen-was-er-canvas/comment-page-1/#comment-35454</feedburner:origLink></item>
	<item>
		<title>Comment on En toen was er &lt;canvas&gt; by Diederick Lawson</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/U8PtNYN55Qg/</link>
		<dc:creator>Diederick Lawson</dc:creator>
		<pubDate>Mon, 28 Jun 2010 10:45:13 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1774#comment-35433</guid>
		<description>@rikkert thanks, goed opgemerkt</description>
		<content:encoded><![CDATA[<p>@rikkert thanks, goed opgemerkt</p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/U8PtNYN55Qg" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/06/28/en-toen-was-er-canvas/comment-page-1/#comment-35433</feedburner:origLink></item>
	<item>
		<title>Comment on En toen was er &lt;canvas&gt; by rikkert</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/TLK-ZSEeDqg/</link>
		<dc:creator>rikkert</dc:creator>
		<pubDate>Mon, 28 Jun 2010 09:04:56 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1774#comment-35432</guid>
		<description>kleine note: die docs zijn opgesteld door de WhatWG, niet w3c</description>
		<content:encoded><![CDATA[<p>kleine note: die docs zijn opgesteld door de WhatWG, niet w3c</p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/TLK-ZSEeDqg" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/06/28/en-toen-was-er-canvas/comment-page-1/#comment-35432</feedburner:origLink></item>
	<item>
		<title>Comment on Locaties opzoeken en weergeven met de google maps api by J. Ouendag</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/DV6Vk2ooqPo/</link>
		<dc:creator>J. Ouendag</dc:creator>
		<pubDate>Mon, 14 Jun 2010 09:10:19 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=550#comment-35329</guid>
		<description>Net begonnen met versie 3 van de API (voor het embedden in een website) voor Google Maps. Alles werkt op het scherm, snel en goed. Alleen, laatste fase: afdrukken - dan blijkt dat in versie 3 markers (locaties weergegeven op de map) niet worden afgedrukt. Een bug, of bewust gedaan? Dus ik wou dat ik was begonnen met versie 2.</description>
		<content:encoded><![CDATA[<p>Net begonnen met versie 3 van de API (voor het embedden in een website) voor Google Maps. Alles werkt op het scherm, snel en goed. Alleen, laatste fase: afdrukken &#8211; dan blijkt dat in versie 3 markers (locaties weergegeven op de map) niet worden afgedrukt. Een bug, of bewust gedaan? Dus ik wou dat ik was begonnen met versie 2.</p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/DV6Vk2ooqPo" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2009/06/16/locaties-opzoeken-en-weergeven-met-de-google-maps-api/comment-page-1/#comment-35329</feedburner:origLink></item>
	<item>
		<title>Comment on BDD Javascript Ontwikkelen met Cucumber by RailsConf 2010, Tutorials: Avoiding and Fixing Rails Antipatterns | Finalist Developers Blog</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/FDC2fnZH5Pc/</link>
		<dc:creator>RailsConf 2010, Tutorials: Avoiding and Fixing Rails Antipatterns | Finalist Developers Blog</dc:creator>
		<pubDate>Tue, 08 Jun 2010 06:08:14 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1647#comment-35272</guid>
		<description>[...] schrijf je voor het huidige gedrag integratietests, met bijvoorbeeld Cucumber, om het huidige gedrag vast te leggen. Dit zorgt ervoor dat je zonder problemen kan gaan hakken in [...]</description>
		<content:encoded><![CDATA[<p>[...] schrijf je voor het huidige gedrag integratietests, met bijvoorbeeld Cucumber, om het huidige gedrag vast te leggen. Dit zorgt ervoor dat je zonder problemen kan gaan hakken in [...]</p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/FDC2fnZH5Pc" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/05/04/bdd-javascript-ontwikkelen-met-cucumber/comment-page-1/#comment-35272</feedburner:origLink></item>
	<item>
		<title>Comment on Qu’est-ce que c’est Rubyesque? by RailsConf 2010, Tutorials: Avoiding and Fixing Rails Antipatterns | Finalist Developers Blog</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/VohW45wjWDM/</link>
		<dc:creator>RailsConf 2010, Tutorials: Avoiding and Fixing Rails Antipatterns | Finalist Developers Blog</dc:creator>
		<pubDate>Tue, 08 Jun 2010 03:09:19 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1584#comment-35271</guid>
		<description>[...] Is de code Rubyesque? [...]</description>
		<content:encoded><![CDATA[<p>[...] Is de code Rubyesque? [...]</p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/VohW45wjWDM" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/04/12/quest-ce-que-cest-rubyesque/comment-page-1/#comment-35271</feedburner:origLink></item>
	<item>
		<title>Comment on Locaties opzoeken en weergeven met de google maps api by rob</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/hWljdHd2OJA/</link>
		<dc:creator>rob</dc:creator>
		<pubDate>Thu, 03 Jun 2010 10:15:37 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=550#comment-35239</guid>
		<description>interessant, maar waar moet je beginnen om een google map op je website te krijgen. Ik wil een soort dealer locator maken en meerdere locaties plotten op de kaart van Nederland.</description>
		<content:encoded><![CDATA[<p>interessant, maar waar moet je beginnen om een google map op je website te krijgen. Ik wil een soort dealer locator maken en meerdere locaties plotten op de kaart van Nederland.</p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/hWljdHd2OJA" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2009/06/16/locaties-opzoeken-en-weergeven-met-de-google-maps-api/comment-page-1/#comment-35239</feedburner:origLink></item>
	<item>
		<title>Comment on Rack by Martijn Storck</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/yUdFRll5Nzk/</link>
		<dc:creator>Martijn Storck</dc:creator>
		<pubDate>Wed, 02 Jun 2010 14:51:26 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1564#comment-35230</guid>
		<description>Ik heb er nog nooit zo bij stil gestaan, maar het is wel waar wat je zegt, de adoptie van Rack is absoluut een toonbeeld van hoe de Ruby community kan samenwerken. Mede dankzij Rack is Rails nog volwassener geworden.</description>
		<content:encoded><![CDATA[<p>Ik heb er nog nooit zo bij stil gestaan, maar het is wel waar wat je zegt, de adoptie van Rack is absoluut een toonbeeld van hoe de Ruby community kan samenwerken. Mede dankzij Rack is Rails nog volwassener geworden.</p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/yUdFRll5Nzk" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/03/22/rack/comment-page-1/#comment-35230</feedburner:origLink></item>
	<item>
		<title>Comment on Inleiding plaatsen bij folders in Alfresco Share by Tweets that mention new blogpost - 'Inleiding plaatsen bij folders in Alfresco Share' #Alfresco -- Topsy.com</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/P5E_G7-0JmE/</link>
		<dc:creator>Tweets that mention new blogpost - 'Inleiding plaatsen bij folders in Alfresco Share' #Alfresco -- Topsy.com</dc:creator>
		<pubDate>Thu, 06 May 2010 13:57:03 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1632#comment-34845</guid>
		<description>[...] This post was mentioned on Twitter by Finalist IT Group. Finalist IT Group said: new blogpost - 'Inleiding plaatsen bij folders in Alfresco Share' http://bit.ly/c8sr1f #Alfresco [...]</description>
		<content:encoded><![CDATA[<p>[...] This post was mentioned on Twitter by Finalist IT Group. Finalist IT Group said: new blogpost &#8211; &#39;Inleiding plaatsen bij folders in Alfresco Share&#39; <a href="http://bit.ly/c8sr1f" rel="nofollow">http://bit.ly/c8sr1f</a> #Alfresco [...]</p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/P5E_G7-0JmE" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/05/04/inleiding-plaatsen-bij-folders-in-alfresco-share/comment-page-1/#comment-34845</feedburner:origLink></item>
	<item>
		<title>Comment on BDD Javascript Ontwikkelen met Cucumber by Iain Hecker</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/25ZQUvqAKlQ/</link>
		<dc:creator>Iain Hecker</dc:creator>
		<pubDate>Tue, 04 May 2010 17:30:28 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1647#comment-34824</guid>
		<description>Ja, cucumber-rails 0.3.1 is uit, je hoeft dus in je Gemfile niet meer direct te verwijzen naar de git-repo.


&lt;pre lang="ruby"&gt;
source "http://rubygems.org"
gem 'rails', '3.0.0.beta3'
gem 'sqlite3-ruby', :require =&gt; 'sqlite'

# meer dependencies hier

group :test do
  gem 'test-unit', :require =&gt; 'test/unit'
  gem 'rspec-rails', '2.0.0.beta.8'
  gem 'capybara'
  gem 'database_cleaner'
  gem 'cucumber-rails'
  gem 'launchy'
end
&lt;/pre&gt;</description>
		<content:encoded><![CDATA[<p>Ja, cucumber-rails 0.3.1 is uit, je hoeft dus in je Gemfile niet meer direct te verwijzen naar de git-repo.</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">source <span style="color:#996600;">&quot;http://rubygems.org&quot;</span>
gem <span style="color:#996600;">'rails'</span>, <span style="color:#996600;">'3.0.0.beta3'</span>
gem <span style="color:#996600;">'sqlite3-ruby'</span>, <span style="color:#ff3333; font-weight:bold;">:require</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'sqlite'</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># meer dependencies hier</span>
&nbsp;
group <span style="color:#ff3333; font-weight:bold;">:test</span> <span style="color:#9966CC; font-weight:bold;">do</span>
  gem <span style="color:#996600;">'test-unit'</span>, <span style="color:#ff3333; font-weight:bold;">:require</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'test/unit'</span>
  gem <span style="color:#996600;">'rspec-rails'</span>, <span style="color:#996600;">'2.0.0.beta.8'</span>
  gem <span style="color:#996600;">'capybara'</span>
  gem <span style="color:#996600;">'database_cleaner'</span>
  gem <span style="color:#996600;">'cucumber-rails'</span>
  gem <span style="color:#996600;">'launchy'</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/25ZQUvqAKlQ" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/05/04/bdd-javascript-ontwikkelen-met-cucumber/comment-page-1/#comment-34824</feedburner:origLink></item>
	<item>
		<title>Comment on BDD Javascript Ontwikkelen met Cucumber by Tweets that mention BDD Javascript Ontwikkelen met Cucumber | Finalist Developers Blog -- Topsy.com</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/JEE53UzAAU0/</link>
		<dc:creator>Tweets that mention BDD Javascript Ontwikkelen met Cucumber | Finalist Developers Blog -- Topsy.com</dc:creator>
		<pubDate>Tue, 04 May 2010 08:35:23 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1647#comment-34821</guid>
		<description>[...] This post was mentioned on Twitter by Ariejan, Ariejan, Iain, Rotterdam.rb, Finalist IT Group and others. Finalist IT Group said: new blogpost: BDD Javascript Ontwikkelen met Cucumber http://bit.ly/bthdAN #javascript #ruby [...]</description>
		<content:encoded><![CDATA[<p>[...] This post was mentioned on Twitter by Ariejan, Ariejan, Iain, Rotterdam.rb, Finalist IT Group and others. Finalist IT Group said: new blogpost: BDD Javascript Ontwikkelen met Cucumber <a href="http://bit.ly/bthdAN" rel="nofollow">http://bit.ly/bthdAN</a> #javascript #ruby [...]</p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/JEE53UzAAU0" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/05/04/bdd-javascript-ontwikkelen-met-cucumber/comment-page-1/#comment-34821</feedburner:origLink></item>
	<item>
		<title>Comment on Ruby/Scrum volgens Finalist – de ontwikkelaar by BDD Javascript Ontwikkelen met Cucumber | Finalist Developers Blog</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/1TMyEdo6uno/</link>
		<dc:creator>BDD Javascript Ontwikkelen met Cucumber | Finalist Developers Blog</dc:creator>
		<pubDate>Tue, 04 May 2010 07:04:23 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/2009/03/02/ruby-scrum-volgens-finalist-de-ontwikkelaar/#comment-34819</guid>
		<description>[...] is weer komkommertijd. Ruim een jaar geleden schreef ik een blogpost over de testtool “Cucumber“. Cucumber is een testtool om in BDD-stijl te ontwikkelen. [...]</description>
		<content:encoded><![CDATA[<p>[...] is weer komkommertijd. Ruim een jaar geleden schreef ik een blogpost over de testtool &#8220;Cucumber&#8220;. Cucumber is een testtool om in BDD-stijl te ontwikkelen. [...]</p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/1TMyEdo6uno" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2009/03/02/ruby-scrum-volgens-finalist-de-ontwikkelaar/comment-page-1/#comment-34819</feedburner:origLink></item>
	<item>
		<title>Comment on Datum en tijd in Java by Jesper de Jong</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/RMONcbqFeTk/</link>
		<dc:creator>Jesper de Jong</dc:creator>
		<pubDate>Wed, 28 Apr 2010 14:12:04 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1334#comment-34752</guid>
		<description>"Objecten van dit type representeren een specifiek tijdstip dat door het object intern wordt gerepresenteerd door het aantal miliseconden sinds de zogenaamde ‘Epoch’ (1 januari 1970, 0:00 uur) en een tijdszone."

Dat is niet helemaal waar - java.util.Date objecten bevatten alleen een aantal milliseconden (sinds 01-01-1970 00:00:00 UTC), geen timezone. Eén van de dingen die vaak verwarrend is voor programmeurs is dat class Date niets weet van timezones.

"Om bijvoorbeeld het jaar van een Calendar object met de naam cal  op te vragen ziet de aanroep er als volgt uit: cal.get(YEAR) waarbij YEAR een constante is die op Calendar is gedefinieerd."

Dit is inderdaad erg lelijk, een vorm van het magical strings anti-pattern: http://wiki.apidesign.org/wiki/MagicalStrings</description>
		<content:encoded><![CDATA[<p>&#8220;Objecten van dit type representeren een specifiek tijdstip dat door het object intern wordt gerepresenteerd door het aantal miliseconden sinds de zogenaamde ‘Epoch’ (1 januari 1970, 0:00 uur) en een tijdszone.&#8221;</p>
<p>Dat is niet helemaal waar &#8211; java.util.Date objecten bevatten alleen een aantal milliseconden (sinds 01-01-1970 00:00:00 UTC), geen timezone. Eén van de dingen die vaak verwarrend is voor programmeurs is dat class Date niets weet van timezones.</p>
<p>&#8220;Om bijvoorbeeld het jaar van een Calendar object met de naam cal  op te vragen ziet de aanroep er als volgt uit: cal.get(YEAR) waarbij YEAR een constante is die op Calendar is gedefinieerd.&#8221;</p>
<p>Dit is inderdaad erg lelijk, een vorm van het magical strings anti-pattern: <a href="http://wiki.apidesign.org/wiki/MagicalStrings" rel="nofollow">http://wiki.apidesign.org/wiki/MagicalStrings</a></p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/RMONcbqFeTk" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/01/06/datum-en-tijd-in-java/comment-page-1/#comment-34752</feedburner:origLink></item>
	<item>
		<title>Comment on Thema’s voor Alfresco Share sites by Tweets that mention Thema’s voor Alfresco Share sites | Finalist Developers Blog -- Topsy.com</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/eM_d6eQiiHE/</link>
		<dc:creator>Tweets that mention Thema’s voor Alfresco Share sites | Finalist Developers Blog -- Topsy.com</dc:creator>
		<pubDate>Wed, 28 Apr 2010 04:11:05 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1595#comment-34750</guid>
		<description>[...] This post was mentioned on Twitter by Finalist IT Group. Finalist IT Group said: new blogpost: 'Thema’s voor Alfresco Share sites' http://bit.ly/9kP3xt #Alfresco [...]</description>
		<content:encoded><![CDATA[<p>[...] This post was mentioned on Twitter by Finalist IT Group. Finalist IT Group said: new blogpost: &#39;Thema’s voor Alfresco Share sites&#39; <a href="http://bit.ly/9kP3xt" rel="nofollow">http://bit.ly/9kP3xt</a> #Alfresco [...]</p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/eM_d6eQiiHE" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/04/26/themas-voor-alfresco-share-sites/comment-page-1/#comment-34750</feedburner:origLink></item>
	<item>
		<title>Comment on Qu’est-ce que c’est Rubyesque? by iain</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/XB3hVTiSGCw/</link>
		<dc:creator>iain</dc:creator>
		<pubDate>Wed, 14 Apr 2010 11:27:22 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1584#comment-34542</guid>
		<description>@rikkert:

Gebruikers, als in eind-gebruikers, bezoekers van de website bijv, willen natuurlijk helemaal geen errors zien. In production-mode zal je dus een vriendelijke error-pagina moeten maken, terwijl de errors gelogd worden voor de developers. In development en test-mode wil je die errors gewoon gelijk zien zodra ze gebeuren. Dit heeft niks met statisch of dynamische code te maken.

De gebruiker van de 'interface' is een programmeur. Die wilt tijdens het ontwikkelen ook errors zien.

Ik ontken niet dat type-restricties in interfaces niet helpen, maar dan alleen in een statische taal. In een dynamische taal als Ruby geef je alleen een andere error die je wellicht toch al gekregen zou hebben. Alles in Ruby is immers runtime. Of ik nu de error krijg dat de eerste parameter een Eend-object moet zijn, en niet een Kat-object of dat de methode 'vlieg()' niet bestaat op mijn Kat-object, ik kan met beiden uit de voeten. Ik heb denk ik zelfs meer aan de tweede error, aangezien ik daarmee wel mijn Vleermuis-object kan gebruiken. Als ik als type restrictie 'Vogel' zou hebben had ik mijn Vleermuis-object ook niet kunnen gebruiken, terwijl ik alleen geinteresseerd ben in het vlieggedrag.

Statisch vs. Dynamisch is ook een eindeloze discussie. Ik durf niet te zeggen welke beter is. Ik durf wel te zeggen dat in een taal die dynamisch is, je niet statisch moet proberen te programmeren. Dat levert alleen maar ellende op.</description>
		<content:encoded><![CDATA[<p>@rikkert:</p>
<p>Gebruikers, als in eind-gebruikers, bezoekers van de website bijv, willen natuurlijk helemaal geen errors zien. In production-mode zal je dus een vriendelijke error-pagina moeten maken, terwijl de errors gelogd worden voor de developers. In development en test-mode wil je die errors gewoon gelijk zien zodra ze gebeuren. Dit heeft niks met statisch of dynamische code te maken.</p>
<p>De gebruiker van de &#8216;interface&#8217; is een programmeur. Die wilt tijdens het ontwikkelen ook errors zien.</p>
<p>Ik ontken niet dat type-restricties in interfaces niet helpen, maar dan alleen in een statische taal. In een dynamische taal als Ruby geef je alleen een andere error die je wellicht toch al gekregen zou hebben. Alles in Ruby is immers runtime. Of ik nu de error krijg dat de eerste parameter een Eend-object moet zijn, en niet een Kat-object of dat de methode &#8216;vlieg()&#8217; niet bestaat op mijn Kat-object, ik kan met beiden uit de voeten. Ik heb denk ik zelfs meer aan de tweede error, aangezien ik daarmee wel mijn Vleermuis-object kan gebruiken. Als ik als type restrictie &#8216;Vogel&#8217; zou hebben had ik mijn Vleermuis-object ook niet kunnen gebruiken, terwijl ik alleen geinteresseerd ben in het vlieggedrag.</p>
<p>Statisch vs. Dynamisch is ook een eindeloze discussie. Ik durf niet te zeggen welke beter is. Ik durf wel te zeggen dat in een taal die dynamisch is, je niet statisch moet proberen te programmeren. Dat levert alleen maar ellende op.</p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/XB3hVTiSGCw" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/04/12/quest-ce-que-cest-rubyesque/comment-page-1/#comment-34542</feedburner:origLink></item>
	<item>
		<title>Comment on Qu’est-ce que c’est Rubyesque? by Nils Breunese</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/AnvIu_XGh4E/</link>
		<dc:creator>Nils Breunese</dc:creator>
		<pubDate>Tue, 13 Apr 2010 20:59:42 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1584#comment-34536</guid>
		<description>Het feit dat Groovy je keuze geeft waar je wel en niet statische typering wil gebruiken vind ik zelf wel een groot voordeel van Groovy boven Ruby (dynamisch) en Java (statisch).</description>
		<content:encoded><![CDATA[<p>Het feit dat Groovy je keuze geeft waar je wel en niet statische typering wil gebruiken vind ik zelf wel een groot voordeel van Groovy boven Ruby (dynamisch) en Java (statisch).</p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/AnvIu_XGh4E" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/04/12/quest-ce-que-cest-rubyesque/comment-page-1/#comment-34536</feedburner:origLink></item>
	<item>
		<title>Comment on Qu’est-ce que c’est Rubyesque? by rikkert</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/9sHe5O2ipJo/</link>
		<dc:creator>rikkert</dc:creator>
		<pubDate>Tue, 13 Apr 2010 13:41:28 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1584#comment-34535</guid>
		<description>dynamische talen lenen zich op een heel andere manier voor debugging. Vanuit javascript oogpunt: Afhankelijk van je debug mode zou je al je classes kunnen instrumenteren met error handling. In een enterprise omgeving wil je een gebruiker niet lastig vallen met errors.

Checken van types hoeft ook echt niet overal, maar in interfaces is het absoluut aan te raden. Dat is wel iets wat je met static typing oplost, maar het brengt ook weer een sloot restricties met zich mee. Je helpt hiermee de gebruiker van de code enorm.</description>
		<content:encoded><![CDATA[<p>dynamische talen lenen zich op een heel andere manier voor debugging. Vanuit javascript oogpunt: Afhankelijk van je debug mode zou je al je classes kunnen instrumenteren met error handling. In een enterprise omgeving wil je een gebruiker niet lastig vallen met errors.</p>
<p>Checken van types hoeft ook echt niet overal, maar in interfaces is het absoluut aan te raden. Dat is wel iets wat je met static typing oplost, maar het brengt ook weer een sloot restricties met zich mee. Je helpt hiermee de gebruiker van de code enorm.</p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/9sHe5O2ipJo" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/04/12/quest-ce-que-cest-rubyesque/comment-page-1/#comment-34535</feedburner:origLink></item>
	<item>
		<title>Comment on Qu’est-ce que c’est Rubyesque? by Nico Klasens</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/hI2pz-SSUxw/</link>
		<dc:creator>Nico Klasens</dc:creator>
		<pubDate>Mon, 12 Apr 2010 19:59:24 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1584#comment-34532</guid>
		<description>Ik was wel bij de avond en heb zeer genoten van de uitleg van Rubyesque. De avond bevestigde hoe ik dacht dat professionele rubyisten denken over hun taal. Als ik ga spelen met een nieuwe taal dan probeer ik het te classificeren naast de anderen die ik al ken. Een van de criteria is hoeveel vrijheid de taal geeft. Een andere is hoe de gevorderde programmeurs zichzelf zien. 

Iedere programmeur die zijn vak al een hele tijd uitoefent zal zeggen dat mens leesbare code belangrijker is dan computer efficiënte code. Dit heeft niets met de taal te maken. Wat leesbaar is, is voor iedereen weer anders. Dit heeft meer te maken of je alles expliciet wilt zien of genoegen neemt met wat de syntax impliceert. Dit heeft meer te maken met de code style discussie dan met de code standards die we allemaal aanhouden.

Bij het proces van vertellen aan de computer wat die moet doen heb je voor elk aspect een regel nodig. Als er veel regels zijn dan hoef je minder zelf te bedenken. Als er weinig regels zijn moet je de ongedekte aspecten zelf invullen. De vrijheid van een taal hangt heel dicht samen met of iets expliciet moet zijn, een regel heeft, of niet. Als er geen regel is heb je de vrijheid om het zelf in te vullen, maar als je de belangrijke aspecten niet invult zul je zeker in de problemen komen. Sommige talen streven naar ultieme vrijheid. Anderen streven naar een volledige set van regels. Wat voor hippie of control-freak ben jij?

In het boek “Coders at Work” stelt de interviewer altijd de vraag: Do you consider yourself a scientist, an engineer, an artist or a craftsman? Elke taal is bedacht door een programmeur die in minstens één van deze omschrijvingen past. Een taal erft de eigenschappen van de programmeur. De taal die het beste bij jou past is waarschijnlijk de taal die geschreven is door een programmeur die zichzelf hetzelfde ziet als jou.

De argumenten om VOOR Ruby te kiezen zouden ook juist redenen kunnen zijn om het niet te doen. Ik ben het daarom helemaal eens met de conclusie.

Het niet nodig hebben van static typing in Ruby past helemaal bij de filosofie dat “de verantwoordelijkheid van het juist gebruiken van een library ligt bij de gebruiker en niet de maker van de library”. Een vereiste hierbij is dat je kunt zien waar het object aan moet voldoen als het erin gaat. Documentatie van de public API moet dan heel uitgebreid zijn of je moet kunnen zien wat er gebeurd. Ruby levert de laatste optie. Je gaat static typing missen als je niet goed meer kunt achterhalen wat er gebeurd.</description>
		<content:encoded><![CDATA[<p>Ik was wel bij de avond en heb zeer genoten van de uitleg van Rubyesque. De avond bevestigde hoe ik dacht dat professionele rubyisten denken over hun taal. Als ik ga spelen met een nieuwe taal dan probeer ik het te classificeren naast de anderen die ik al ken. Een van de criteria is hoeveel vrijheid de taal geeft. Een andere is hoe de gevorderde programmeurs zichzelf zien. </p>
<p>Iedere programmeur die zijn vak al een hele tijd uitoefent zal zeggen dat mens leesbare code belangrijker is dan computer efficiënte code. Dit heeft niets met de taal te maken. Wat leesbaar is, is voor iedereen weer anders. Dit heeft meer te maken of je alles expliciet wilt zien of genoegen neemt met wat de syntax impliceert. Dit heeft meer te maken met de code style discussie dan met de code standards die we allemaal aanhouden.</p>
<p>Bij het proces van vertellen aan de computer wat die moet doen heb je voor elk aspect een regel nodig. Als er veel regels zijn dan hoef je minder zelf te bedenken. Als er weinig regels zijn moet je de ongedekte aspecten zelf invullen. De vrijheid van een taal hangt heel dicht samen met of iets expliciet moet zijn, een regel heeft, of niet. Als er geen regel is heb je de vrijheid om het zelf in te vullen, maar als je de belangrijke aspecten niet invult zul je zeker in de problemen komen. Sommige talen streven naar ultieme vrijheid. Anderen streven naar een volledige set van regels. Wat voor hippie of control-freak ben jij?</p>
<p>In het boek “Coders at Work” stelt de interviewer altijd de vraag: Do you consider yourself a scientist, an engineer, an artist or a craftsman? Elke taal is bedacht door een programmeur die in minstens één van deze omschrijvingen past. Een taal erft de eigenschappen van de programmeur. De taal die het beste bij jou past is waarschijnlijk de taal die geschreven is door een programmeur die zichzelf hetzelfde ziet als jou.</p>
<p>De argumenten om VOOR Ruby te kiezen zouden ook juist redenen kunnen zijn om het niet te doen. Ik ben het daarom helemaal eens met de conclusie.</p>
<p>Het niet nodig hebben van static typing in Ruby past helemaal bij de filosofie dat “de verantwoordelijkheid van het juist gebruiken van een library ligt bij de gebruiker en niet de maker van de library”. Een vereiste hierbij is dat je kunt zien waar het object aan moet voldoen als het erin gaat. Documentatie van de public API moet dan heel uitgebreid zijn of je moet kunnen zien wat er gebeurd. Ruby levert de laatste optie. Je gaat static typing missen als je niet goed meer kunt achterhalen wat er gebeurd.</p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/hI2pz-SSUxw" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/04/12/quest-ce-que-cest-rubyesque/comment-page-1/#comment-34532</feedburner:origLink></item>
	<item>
		<title>Comment on Qu’est-ce que c’est Rubyesque? by Robin</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/Y7SRLNxHmTo/</link>
		<dc:creator>Robin</dc:creator>
		<pubDate>Mon, 12 Apr 2010 15:38:02 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1584#comment-34529</guid>
		<description>Monkey punching??</description>
		<content:encoded><![CDATA[<p>Monkey punching??</p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/Y7SRLNxHmTo" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/04/12/quest-ce-que-cest-rubyesque/comment-page-1/#comment-34529</feedburner:origLink></item>
	<item>
		<title>Comment on Qu’est-ce que c’est Rubyesque? by iain</title>
		<link>http://feedproxy.google.com/~r/CommentsFinalistDevelopersBlog/~3/WKyneRbe81M/</link>
		<dc:creator>iain</dc:creator>
		<pubDate>Mon, 12 Apr 2010 13:02:38 +0000</pubDate>
		<guid isPermaLink="false">http://blog.finalist.com/?p=1584#comment-34528</guid>
		<description>@martin:

&gt;&gt; wat onderscheid Rubyesque nu precies van algemeen aanvaarde best practices?

Ben blij dat jij dat algemene best parctices vindt :)

&gt;&gt; "You’re checking for null values all over the place."

Dat probleem los je niet op met een static typing

&gt;&gt; There’s lots of calls to Ruby’s kind_of? method, which asks, “Is this a kind of User object? Because that’s what we’re expecting. If we don’t get that, this is going to explode.”

En dan wat? Raise je een error als je niet het juiste type object krijgt? Dat is ook een explosie. Of log je de boel alleen? Op het moment dat je een object krijgt waar je niks mee kan, is het in dynamische talen al te laat. De code is al aan het uitvoeren. Wat dit met lange uptimes te maken heeft weet ik niet.</description>
		<content:encoded><![CDATA[<p>@martin:</p>
<p>&gt;&gt; wat onderscheid Rubyesque nu precies van algemeen aanvaarde best practices?</p>
<p>Ben blij dat jij dat algemene best parctices vindt <img src='http://blog.finalist.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&gt;&gt; &#8220;You’re checking for null values all over the place.&#8221;</p>
<p>Dat probleem los je niet op met een static typing</p>
<p>&gt;&gt; There’s lots of calls to Ruby’s kind_of? method, which asks, “Is this a kind of User object? Because that’s what we’re expecting. If we don’t get that, this is going to explode.”</p>
<p>En dan wat? Raise je een error als je niet het juiste type object krijgt? Dat is ook een explosie. Of log je de boel alleen? Op het moment dat je een object krijgt waar je niks mee kan, is het in dynamische talen al te laat. De code is al aan het uitvoeren. Wat dit met lange uptimes te maken heeft weet ik niet.</p>
<img src="http://feeds.feedburner.com/~r/CommentsFinalistDevelopersBlog/~4/WKyneRbe81M" height="1" width="1"/>]]></content:encoded>
	<feedburner:origLink>http://blog.finalist.com/2010/04/12/quest-ce-que-cest-rubyesque/comment-page-1/#comment-34528</feedburner:origLink></item>
</channel>
</rss>
