futuremint

futuremint

Dave Woodward  //  Father and Programming Language Enthusiast. Has a love/hate relationship with computers. Insufferable iconoclast in almost all walks of life. Prefers dynamic languages with s-expressions and unpretentious technology. However, still prefers small words. And irony.

Jan 1, 2010 / 1:15pm

Smalltalk (and Seaside) versus Ruby (and Rails): Intro

I've been using Rails since 2004, and some of its' libraries before that (I setup a local Instiki that, AFAIK, is still running at my old employer). Once I started using Rails at my then job at a radio station group (designing/managing the websites), I decided that Rails was a superior development experience. So I started looking for a way to use Rails as a full-time job. I've since enjoyed most of the long hours I've spent developing various things with Rails for various companies.

My current full-time job still includes maintaining a Rails application (one that I built in late 2005 on a contract), and I still enjoy it. I get to make the technology choices at my current company, so in early summer of 2009 I was tasked with separating some functionality of the existing Rails app out into a stand-alone application. I initially wanted to go the route of some sort of NoSQL database with a JS only (or mostly JS) front-end (some sort of combination of CouchDB, Rails & jQuery).

However, I've also had my eye on Smalltalk ever since hearing about it from a co-worker in 2004 (around the same time I discovered Rails). I did some investigation and spent some late nights with a few quality online tutorials. I started with "Seaside Tutorial" , as well as "Learning Web Development with Seaside". Now there is the much more detailed and up-to-date book "Dynamic Web Development with Seaside". Anyway, I basically learned Smalltalk and Seaside at the same time, and decided to build the new app in Seaside.

So now almost a year later I much prefer developing with Smalltalk & Seaside than Ruby & Ruby on Rails. I use Pharo Smalltalk exclusively for development and the server deployment (I used Squeak 3.10 until Pharo went beta). The database I use is SandstoneDB from Ramon Leon, which is basically an Object Database that just persists the objects as text files (it's essentially Prevayler with an Active Record style API). Once this app needs to scale, I'll probably move it to Gemstone/S (the people behind Maglev for you Ruby folks).  For business applications, I'm currently of the opinion that nothing beats a web application in a dynamic language on top of an object database.

I still switch back and forth between Smalltalk and Ruby, and will be doing so for the foreseeable future. Most days I'm using both, sometimes inside the same hour! 

I'll be giving a talk about Seaside & Smalltalk at the February Indy.rb meetup. The similarities between Smalltalk and Ruby are pretty interesting, and now I know what people mean when they say that "Smalltalk isn't dead, it survives in most languages used today!" You can find language features inspired by, or stolen from Smalltalk in Java, Ruby, Javascript and many other languages in common use today.

I already have 3 posts I'm ready to write comparing the two languages and frameworks from a development perspective, so expect to see those over the coming months. I also have some thoughts I'm going to share about development environments. I used to be completely anti-IDE. I used to only use TextMate to edit my code, and the command line for all of the tools. Then I moved to GNU Emacs and loved it. Now I get frustrated and bogged-down in a text-editor only setup. I use RubyMine for Rails work, and Smalltalk has awesome development tools (even in the "under-developed" open source versions). The modern IDE has its roots in Smalltalk and Lisp, and once you use an IDE that actually IS "integrated" as the acronym suggests, you will never turn back.

6 comments

Mar 08, 2011
Vince said...
"For business applications, I'm currently of the opinion that nothing beats a web application in a dynamic language on top of an object database."

I am putting a lot of energy in learning Smalltalk/Seaside (coming from a Django/Web2py/python background). I am also very interested in business applications. I would really really like to see a substantial post about your comment above.

Informative article by the way.

Thanks, Vince

Jun 03, 2011
Robert said...
Interesting. I've been using Smalltalk since the mid-1980's (guess that shows my age) and ran a quite successful consultancy focused on building business applications in Smalltalk in the late 90's. Then everybody went Java-crazy and programming wasn't fun anymore.

I'm now building a business app in a stealth start-up together with some other people and am currently trying to figure out whether to build it using Ruby on Rails, Grails, Scala, Clojure or something else.

Now that I've read up on Seaside and the current state of Smalltalk (it isn't dead at all) that 'something else' could well be Smalltalk & Seaside. If not, it's likely to be Ruby on Rails.

Sep 23, 2011
Hi dave
I can tell you that your words are really great to hear. It is a challenge for us to continue to enhance Pharo while at the same time making sure that people like you can make a living using it. We are really concerned by this tension: getting a better system, moving forward and at the same time making sure that it is 100% productive. Now we are working hard also to get better tools and a lot of enhancements. Our of our goals around pharo is really to create an ecosystem where people can build good software. So thanks because you give us energy to continue.

Stef

Sep 23, 2011
Dave R said...
Inspiring.
Oct 29, 2011
Sean DeNigris said...
Great post! I also found Smalltalk recently (via C -> C++ -> Objective C -> Ruby) and have never looked back. My biggest shock was the image, which had me initially feel contracted. Yet I soon realized the power that a live, open, dynamic environment bought me, especially the freedom from files/DBs & tool integration you mentioned.
Nov 01, 2011
sebastian said...
reading about your experience feels quite refreshing to old school smalltalkers :)

thanks for writing about it

Leave a comment...