29
Today, I had some time to spend on my new open source movie collection web application, MovDB2.
I did some thinking about infrastructure, and collected my decisions on the project wiki.
The thing is: Most of these decisions have been done more or less arbitrarily.
I’ll list my available options and my reasoning behind the choice.
The problem I want to highlight is: How do you actually choose the right infrastructure for a new project?
Programming language
In such a decision, one of the bigger advantages of some options is that they are well known.
I know a couple of languages that would be fitting for a web application, namely Java, Perl and Python.
Java, as were my thoughts, is too big for this. No need to get into this kind of heavy machinery for something this small.
Perl. That’s difficult. The previous movie database project, still working well, was a perl project. Nowadays it’s kinda non-maintainable, and I don’t really like Perl anymore for its mostlycomplicated syntax. Perl is still going strong on the Tiobe index and is well-supported everywhere.
Python, is the hip, new scripting language. I really like it and have never done anything bigger in it.
So, the choice was Python.
I didn’t really want to get into Perl again, and Python seemed like a really good choice.
I should mention I had a small thought of learning Ruby on Rails for this, but I wasn’t really keen on getting into something completely new and unknown for this.
In the end, MovDB2 will be an application that I really need, not something that will only be used if it’s good.
Database
The main open source databases are probably PostgreSQL and MySQL. And maybe SQLite.
I’m a big fan of MySQL and have done many things using it, so I chose it.
That wasn’t a difficult decision.
Interface to the database
Not too complicated, there’s only one really popular interface, and it’s python-mysql.
Interface to the web
This one is more difficult.
There are whole frameworks that handle this kind of stuff, be it Rails for Ruby, or Django for Python.
Because I want to hone my skills in basic Python, I tried to stay mostly on the ground, and chose the default CGI interface of Python.
Template engine
What I learned from creating web applications in Perl is that you better have a good templating engine.
I said I wanted to stay on the ground, but writing a whole templating engine (as I have done in the past) wasn’t in my mind this time.
I chose, what seems to be pretty popular, the Cheetah engine.
IDE
Shouldn’t this already be sorted out?
No.
There are many IDEs which can handle Python, there’s the default IDLE, there’s Eric, there’s the default Gnome editor (gedit), there’s Eclipse with PyDev, and hundreds of others.
In the end, I think gedit is pretty good, and enough for what I want to do, so this is what I chose.
HTML/CSS editor
The second IDE in the project.
Again, there are many.
You can edit the stuff with your favorite text editor, there’s Quanta, nvu, and so on and so on…
I chose Gnome’s kompoZer, which looks to be pretty nice.
This was a really difficult decision though.
Hosting
Another one that shouldn’t be done lightly (but has been in this case ;P).
I can host all the stuff myself, install Trac and a repository… or I can use old, trusted SourceForge, or BerliOS, or maybe the newly rising Google Code?
Again, Google Code seemed like an interesting, and easy-to-use solution.
I seriously considered Launchpad, but there’s just too much stuff I have no idea how to use.
In the end…
… this is still a personal project.
So while some choices seem to have been done lightheartedly, and some were, it’s not so big a deal:
Personal projects are the perfect sandbox to check on technology before using them in bigger (and maybe company) projects.
Who can choose the perfect wiki software, the perfect bugtracker, the perfect framework, the perfect IDE, when there are so many good ones?
Many of my choices depended mostly on checking around on the web, seeing the first couple of Google hits, and then checking the website of some good-looking projects.
The idea is to try out stuff, to change choices even in the middle of the project if they are bad.
Personal projects are the places where it only costs time, but gives experience.
In company projects, the experience is too expensive to gain, usually.
Where do I go with this?
My question to you, the readers, is:
How do You choose your project infrastructure?
What are your favorites for a specialized web application, like this one? What would You have chosen?
What’s the best way to determine “the best tool/technology” out there?
P.S.:
About the omission of PHP:
I’ve never really felt that PHP was my cup of tea, sorry. ![]()
The language is just… not good. It feels like Perl, and I’ve already had that.
Related:
My new project: A GUI and Web service interface for Amazon EC2
The Perfect Job Interview Question
Are you interested in reading more from CodingClues?
Then subscribe to new postings
via RSS or
via
E-Mail.
Add New Comment
Viewing 5 Comments
Thanks. Your comment is awaiting approval by a moderator.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Add New Comment
Trackbacks
(Trackback URL)