Pure Ruby

The contrast between the Java and Ruby communities approach to external libraries is interesting.

In Java, calling executables programs is hard (check out the amount of code it takes to process the input and output). Wrapping a C library is also difficult. You've got to do lots of futzing with the Java Native Interface.

Then Sun came up with the 100% Pure Java marketing campaign to promote writing applications without resorting to native code or calling external programs. This ensured maximum portability for Java applications. There is a lot of dissension and a number of spectacular failures (like Netscape's "Javagator" browser) but being 100% Pure Java is still highly regarded in the Java community, as a quick search will show. Look at the number of open source projects that come up, touting their 100% Pure Java status.

Between the difficulty of calling non-Java programs and the cultural bias against doing it, there is not a lot of this going on. That means there are things that either were re-implemented in Java, don't exist, or aren't considered.

Meanwhile, in Ruby (and Perl and Python -- the "glue" languages) the use of C extensions and calling off to external programs is widespread. Sure, a "Pure Ruby" API may be preferred if it exists, but it's not uncommon for performance bottlenecks to be re-written in C, or for Ruby libraries to wrap C libraries with a Ruby-esque interface.

This does have some problems. Not all C libraries are available on all platforms. Some scripts and libraries only work on Linux and other Unix-like operating systems. A solution that only works on most platforms would be unacceptable to many Java programmers. But it does get Ruby most of the way there, and it brings a huge advantage: Ruby can use much of the existing C libraries (or even Java, with GCJ).

— June 26, 2006

Paul Graham at RailsConf

Paul Graham spoke at RailsConf on The Power of the Marginal.

I must admit I was not particularly impressed.

One thing that particularly annoyed me was this, in a bit about the "Great American Novel", written by committee:

As everyone knows, America plus tragedy equals the Civil War, so that's what it would have to be about. Better stick to the standard cartoon version that the Civil War was about slavery; people would be confused otherwise; plus you can show a lot of strength and diversity.

I am continually surprised that smart people fall for this Confederate-sympathizer "Doomed Cause" claptrap. I think it's especially popular with libertarian types, because it allows them to feel counter-cultural and vaguely superior to all those dolts who believe the "cartoon version" that the Civil War was about slavery.

Consider this analysis of the differences between the US constitution and the Confederate constitution. Nearly every substantive difference deals with cementing the institution of slavery and an inalienable right.

Certainly, the causes of the Civil War were complicated. The opposition to slavery in the North was for economic and political as well as moral reasons. A series of increasingly strained compromises managed to hold the Union together for a while. Understanding why those compromises failed is important.

But to say that the Civil War wasn't about slavery is negligent in the extreme, and in its more virulent forms, neo-Confederate or even racist. Lending support to the false idea that the civil war wasn't about slavery is foolish. Delivering it with such a sense of superiority is dangerous.

More Reading:

Blogcritics: Blogger denies slavery cause of Civil War

The Constitution of the Confederate States of America

Wikipedia: Origins of the American Civil War

— June 26, 2006