The next webapp I write, I think I’m going with some of the new hotness: NoSQL datastore, RESTful API, and Ruby. On a recent project I chose to use a RESTful API which I really like, but it definitely changes how you think of things coming from the XML-RPC way of doing APIs, but I still like its simplicity.

Unfortunately, I went with Java as the implementation instead of something like python or Ruby, and looking back I don’t know why I did that. I should know by now that python and Ruby are much easier to work with than Java has proven to. Hell even the build environment is a pain: ant – write xml build file from scratch, maven – reminds me of make with lot’s of pom.xml files, or buildr – ruby based maven replacement, annoys all Java people. If I had a do over on this I’d choose Ruby as the implementation language.

Since we’re using Java and needed a database we went with Hibernate. If I had to redo this decision, I most certainly would’ve gone with a NoSQL datastore like MongoDB or CouchDB, this way I could avoid the annoying mapping of domain model to relational tables which is highly annoying.

So if you’re planning a new webapp avoid the boring, traditional webapp design of using a relational database with ORM and compiled languagesšŸ™‚

2 thoughts on “can I have a do over?

  1. I am trying to write a single app that can handle defect tracking, testcase tracking, personal tasks, agilo type stuff,etc. Since those apps are all pretty much do the same thing (save records with multiple fields and a workflow, let you search them and give reports), why not have it all integrated, right? I want each domain to just be data in the database, and the application just handles the generic logic.

    Turns out the main thing standing in my way was relational db’s, they’re not flexible enough. So I started playing around with couchdb, which as it turns out, is almost all you need to write the entire app. Not quite though, and even if I could, my javascript-fu is weak.

    So I decided to use my favorite language du jour, clojure, to do the rest. It has a restful, lispy, rails-like library called compojure. Hopefully it’ll turn out well.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s