<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: VB.NET &#8211; arrghh!</title>
	<atom:link href="http://rowansimpson.com/2007/04/03/vbnet-arrghh/feed/" rel="self" type="application/rss+xml" />
	<link>http://rowansimpson.com/2007/04/03/vbnet-arrghh/</link>
	<description>Made in New Zealand from local and imported ingredients</description>
	<lastBuildDate>Sat, 19 May 2012 21:18:21 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: code frenzy &#187; Blog Archive &#187; I&#8217;ve been quoted&#8230; about VB.NET</title>
		<link>http://rowansimpson.com/2007/04/03/vbnet-arrghh/#comment-7571</link>
		<dc:creator><![CDATA[code frenzy &#187; Blog Archive &#187; I&#8217;ve been quoted&#8230; about VB.NET]]></dc:creator>
		<pubDate>Sun, 23 Mar 2008 06:59:27 +0000</pubDate>
		<guid isPermaLink="false">http://rowansimpson.com/2007/04/03/vbnet-arrghh/#comment-7571</guid>
		<description><![CDATA[[...] morning one of my fellow developers sent me a link to this article on Rowan Simpson&#8217;s (formerly the Software Development team lead at Trade Me, now [...]]]></description>
		<content:encoded><![CDATA[<p>[...] morning one of my fellow developers sent me a link to this article on Rowan Simpson&#8217;s (formerly the Software Development team lead at Trade Me, now [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thong Nguyen</title>
		<link>http://rowansimpson.com/2007/04/03/vbnet-arrghh/#comment-5638</link>
		<dc:creator><![CDATA[Thong Nguyen]]></dc:creator>
		<pubDate>Mon, 24 Sep 2007 12:31:02 +0000</pubDate>
		<guid isPermaLink="false">http://rowansimpson.com/2007/04/03/vbnet-arrghh/#comment-5638</guid>
		<description><![CDATA[Hrm, anonymous methods and generators/iterators are pretty powerful declarative/functional language features which are sorely lacking in VB (and Java).

C# anonymous methods also support lexical closures (unlike Java anonymous inner classes).

You could replicate anonymous methods and lexical closures with a lot of code in VB.NET (temporary classes, etc) but replicating complicated iterators would not require just code, but a lot of algorithm/state-machine design and thought for every individual iterator you write.


You can find examples of both features all over the web so I won&#039;t bother posting examples here...

I&#039;m a pretty big advocate of functional and declarative languages.  I use both anonymous methods and iterators *extensively* in most of my C# projects.]]></description>
		<content:encoded><![CDATA[<p>Hrm, anonymous methods and generators/iterators are pretty powerful declarative/functional language features which are sorely lacking in VB (and Java).</p>
<p>C# anonymous methods also support lexical closures (unlike Java anonymous inner classes).</p>
<p>You could replicate anonymous methods and lexical closures with a lot of code in VB.NET (temporary classes, etc) but replicating complicated iterators would not require just code, but a lot of algorithm/state-machine design and thought for every individual iterator you write.</p>
<p>You can find examples of both features all over the web so I won&#8217;t bother posting examples here&#8230;</p>
<p>I&#8217;m a pretty big advocate of functional and declarative languages.  I use both anonymous methods and iterators *extensively* in most of my C# projects.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bleargh</title>
		<link>http://rowansimpson.com/2007/04/03/vbnet-arrghh/#comment-170</link>
		<dc:creator><![CDATA[Bleargh]]></dc:creator>
		<pubDate>Thu, 05 Apr 2007 22:44:00 +0000</pubDate>
		<guid isPermaLink="false">http://rowansimpson.com/2007/04/03/vbnet-arrghh/#comment-170</guid>
		<description><![CDATA[Try cost calculations based on source and destination timezone!  Or better yet, trying to avoid introducing floating point errors in money calculations!

I&#039;ve come to the conclusion that money sucks, and the only solution is to stick my head in the sand and cry.]]></description>
		<content:encoded><![CDATA[<p>Try cost calculations based on source and destination timezone!  Or better yet, trying to avoid introducing floating point errors in money calculations!</p>
<p>I&#8217;ve come to the conclusion that money sucks, and the only solution is to stick my head in the sand and cry.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bwooce</title>
		<link>http://rowansimpson.com/2007/04/03/vbnet-arrghh/#comment-169</link>
		<dc:creator><![CDATA[Bwooce]]></dc:creator>
		<pubDate>Thu, 05 Apr 2007 22:38:39 +0000</pubDate>
		<guid isPermaLink="false">http://rowansimpson.com/2007/04/03/vbnet-arrghh/#comment-169</guid>
		<description><![CDATA[Heh, there are in fact many kinds of rounding for different reasons. See http://www.diycalculator.com/popup-m-round.shtml

It is important to be consistent, and to understand which one you are using. I think the docs are a little light in VB wrt this.

If you think rounding is awful, try timezones.]]></description>
		<content:encoded><![CDATA[<p>Heh, there are in fact many kinds of rounding for different reasons. See <a href="http://www.diycalculator.com/popup-m-round.shtml" rel="nofollow">http://www.diycalculator.com/popup-m-round.shtml</a></p>
<p>It is important to be consistent, and to understand which one you are using. I think the docs are a little light in VB wrt this.</p>
<p>If you think rounding is awful, try timezones.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: marshall</title>
		<link>http://rowansimpson.com/2007/04/03/vbnet-arrghh/#comment-158</link>
		<dc:creator><![CDATA[marshall]]></dc:creator>
		<pubDate>Mon, 02 Apr 2007 20:50:39 +0000</pubDate>
		<guid isPermaLink="false">http://rowansimpson.com/2007/04/03/vbnet-arrghh/#comment-158</guid>
		<description><![CDATA[i will be that smarmy bugger!

i played with anonymous delegates at home the other day (see below). it&#039;s just syntactical sugar but it is something you cannot do in vb. another more basic example would be literal strings. 

these can be done in vb, just not as simply (imo etc etc)...


 public IList GetUnansweredMessages()
        {

            return GetItems(&quot;spc_incoming_message_get&quot;
                , delegate(SqlDataReader dr) 
                    {
                        Model.IncomingMessage message = new Model.IncomingMessage();

                        message.Body = dr.GetString(&quot;body&quot;);
             
                        return message;

                    }
               , new SqlParameter(&quot;@message_filter&quot;, 0));

        }

        delegate T PopulateDataReader(SqlDataReader reader); 
        IList GetItems(string procName, PopulateDataReader method, params object[] paramArray)
        {
            List list = new List();

            using (SqlDataReader dr = ExecuteReader(procName, paramArray)) 
            {
                while (dr.Read())
                {
                    list.Add(method(dr));
                }
            }

            return list;
        }]]></description>
		<content:encoded><![CDATA[<p>i will be that smarmy bugger!</p>
<p>i played with anonymous delegates at home the other day (see below). it&#8217;s just syntactical sugar but it is something you cannot do in vb. another more basic example would be literal strings. </p>
<p>these can be done in vb, just not as simply (imo etc etc)&#8230;</p>
<p> public IList GetUnansweredMessages()<br />
        {</p>
<p>            return GetItems(&#8220;spc_incoming_message_get&#8221;<br />
                , delegate(SqlDataReader dr)<br />
                    {<br />
                        Model.IncomingMessage message = new Model.IncomingMessage();</p>
<p>                        message.Body = dr.GetString(&#8220;body&#8221;);</p>
<p>                        return message;</p>
<p>                    }<br />
               , new SqlParameter(&#8220;@message_filter&#8221;, 0));</p>
<p>        }</p>
<p>        delegate T PopulateDataReader(SqlDataReader reader);<br />
        IList GetItems(string procName, PopulateDataReader method, params object[] paramArray)<br />
        {<br />
            List list = new List();</p>
<p>            using (SqlDataReader dr = ExecuteReader(procName, paramArray))<br />
            {<br />
                while (dr.Read())<br />
                {<br />
                    list.Add(method(dr));<br />
                }<br />
            }</p>
<p>            return list;<br />
        }</p>
]]></content:encoded>
	</item>
</channel>
</rss>

