<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>thinking in geek &#187; ruby</title>
	<atom:link href="http://joshrobb.com/blog/category/ruby/feed/" rel="self" type="application/rss+xml" />
	<link>http://joshrobb.com/blog</link>
	<description>tagline's are so web2.0</description>
	<lastBuildDate>Wed, 02 Jun 2010 14:47:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Turtles all the way down and the CLR (or JVM)</title>
		<link>http://joshrobb.com/blog/2007/04/18/turtles-all-the-way-down-and-the-clr-or-jvm/</link>
		<comments>http://joshrobb.com/blog/2007/04/18/turtles-all-the-way-down-and-the-clr-or-jvm/#comments</comments>
		<pubDate>Wed, 18 Apr 2007 17:24:25 +0000</pubDate>
		<dc:creator>josh</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[smalltalk]]></category>

		<guid isPermaLink="false">http://joshrobb.com/blog/2007/04/18/turtles-all-the-way-down-and-the-clr-or-jvm/</guid>
		<description><![CDATA[Avi makes some comments here about the differences between scripting languages and &#8220;real&#8221; languages. His main point is that real languages (or maybe their VM&#8217;s) are fast enough to be extended in themselves. Now while I think I understand his underlying point &#8211; which is to attempt to clarify why smalltalk rocks (which it does) [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://smallthought.com/avi/">Avi</a> makes some comments <a href="http://smallthought.com/avi/?p=20">here</a> about the differences between scripting languages and &#8220;real&#8221; languages.  His main point is that real languages (or maybe their VM&#8217;s) are fast enough to be extended in themselves. Now while I think I understand his underlying point &#8211; which is to attempt to clarify why smalltalk rocks (which it does) &#8211; I&#8217;m not sure I agree with his analysis.</p>
<p>As far as I&#8217;m aware &#8211; there&#8217;s no C <em>required</em> to run ruby on rails applications<sup>1</sup>. Rails is 100% ruby &#8211; aka Ruby extended in Ruby. It might be that thats not the kind of extension he&#8217;s talking about  &#8211; and in fact it&#8217;s not &#8211; he gives a Ruby example of the problem he&#8217;s talking about &#8211; creating a custom array subclass. Here&#8217;s an example of his code in C#.<br />
<code><br />
public class MyArray : Array {} //error CS0644: 'MyArray' cannot derive from special class 'System.Array'<br />
</code></p>
<ul>
<li>You can&#8217;t extend C# (or Java) in the way he&#8217;s trying to in Ruby.</li>
<li>You can&#8217;t add methods to java.lang.Object or System.Object &#8211; although extension methods in C# 3.0 will let you add behaviour &#8211; but not state.</li>
<li>You can&#8217;t modify the language syntax, add keywords etc&#8230; (no macro like features) the way you can in LISP or smalltalk.</li>
</ul>
<p>Conclusion: C#/Java (well &#8211; the JVM/CLR) are not turtles all the way down. In fact &#8211; Ruby is more deep turtle wise than C# or Java (ruby supports modules/mixins which are somewhat like extension methods in C# 3.0).</p>
<p><strong>Update:</strong> <a href="http://ayende.com/Blog/archive/2007/04/15/A-good-definition-of-scripting-languages.aspx">Ayende likes</a> what Avi says &#8211; looks like we might not agree on this.</p>
<ol class="footnotes"><li id="footnote_0_6" class="footnote">I&#8217;m aware <a href="http://mongrel.rubyforge.org/">mongrel</a> &#8211; a http server which is used for serving rails apps &#8211; has pieces written in C. This is equivalent to IIS for ASP.NET apps (and webrick == casinni &#8211; the VS.NET built in webserver vs Ruby&#8217;s pure Ruby webserver).</li></ol>]]></content:encoded>
			<wfw:commentRss>http://joshrobb.com/blog/2007/04/18/turtles-all-the-way-down-and-the-clr-or-jvm/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Rails as the Visual Basic of the Web</title>
		<link>http://joshrobb.com/blog/2007/04/13/rails-as-the-visual-basic-of-the-web/</link>
		<comments>http://joshrobb.com/blog/2007/04/13/rails-as-the-visual-basic-of-the-web/#comments</comments>
		<pubDate>Fri, 13 Apr 2007 14:12:26 +0000</pubDate>
		<dc:creator>josh</dc:creator>
				<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[web architecture]]></category>

		<guid isPermaLink="false">http://joshrobb.com/blog/2007/04/13/rails-as-the-visual-basic-of-the-web/</guid>
		<description><![CDATA[A couple of things have got me thinking along these lines recently. Giles Bowkett made an interesting post on his blog: &#8220;[T]his has always been my fear for Rails; that in five to ten years, the worst jobs you could get will be Rails jobs where you&#8217;re maintaining stuff built by non-programmers who figured Rails [...]]]></description>
			<content:encoded><![CDATA[<address>A couple of things have got me thinking along these lines recently.</address>
<ol>
<li>Giles Bowkett made an <a href="http://gilesbowkett.blogspot.com/2007/03/conversation-with-reg-braithwaite.html">interesting post</a> on his blog:<br />
<blockquote><p>&#8220;[T]his has always been my fear for Rails; that in five to ten years, the worst jobs you could get will be Rails jobs where you&#8217;re maintaining stuff built by non-programmers who figured Rails made programming so easy that they didn&#8217;t really need to understand what they were doing.&#8221;</p></blockquote>
</li>
<li> In <a href="http://smallthought.com/avi/">Avi Bryant</a>&#8216;s ETech presentation <a href="http://smallthought.com/avi/?p=20">Applied Web Heresies</a> (<a href="http://smallthought.com/avi/etech.pdf">slides</a>) he makes the following statement:<br />
<blockquote><p>&#8220;Meaningful <acronym title="Uniform Resource Locators">URL</acronym>s don&#8217;t carry enough meaning<br />
Names make me think too much<acronym title="Don't repeat yourself"><br />
DRY</acronym> (not everything is an <acronym title="Application Programming Interface">API<acronym>)&#8221;</acronym></acronym></p></blockquote>
</li>
</ol>
<p>This is reminiscent of Visual Basic (and VBA, Access etc..). I know I&#8217;ve done maintenance on some scary code which was written by someone who didn&#8217;t understand enough about what they were doing.</p>
<p><strong>Not Everything is an API </strong></p>
<p>The obsession of Rails dudes with making every object a <acronym title="REpresentational State Transfer">REST</acronym> endpoint is a particularly scary form of religion. In VB6 every &#8220;class&#8221; was exposed as a COM object. For those of you who are not familiar with COM &#8211; this means that every public class in your application was exposed as an API. Weather you wanted it available to other applications or not. As you can imagine &#8211; this resulted in some truly monstrous misuse of parts of applications by other applications and lead to the worst kind of spaghetti dependencies imaginable (circular build dependencies etc).</p>
<p>In general API&#8217;s should be carefully thought through, designed and exposed as a separate development exercise from building a web application. For example:</p>
<ol>
<li>Google maps was released</li>
<li>People started hacking mashups using it.</li>
<li>The GMaps team went away and <em>designed</em> a JavaScript api which is:
<ul>
<li>versioned</li>
<li>licenced</li>
<li>secure</li>
<li>supportable</li>
</ul>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://joshrobb.com/blog/2007/04/13/rails-as-the-visual-basic-of-the-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
