Category Archives: tech choices

Tech Choices a StartUp Developer has to make

The eco system for programming languages and frameworks is well evolved – and is continously evolving. As a web developer you are faced with many choices. I have tried to capture some of the options I had to evaluate for Apartment Adda. I have left out the esoteric languages and frameworks which have not become mainstream yet.

Programming Language – Java, PHP, Ruby, Python

This is the first decision a developer has to make and might be the easiest choice – pick the one where you have the most expertise. However if you are well versed in more than one language – pick the one that will suit your startup – based on the funds you have ( cheapest to host will be php to Java hosting being expensive) , speed at which you want to release ( php/rails being fastest to Java being the slowest ), team’s expertise ( java developers being easy to find and ruby developers being hard to find ) etc.
Framework Choices – Rails, ActiveRecord, CakePHP, Spring, Hibernate, Django..

In most of the cases the framework and language decision will go hand in hand. If you pick Rails and active record then you will be going with Ruby. If you pick Spring,Hibernate – then you will pick Java. In the end it all boils down to the passion and expertise you have with the languages and frameworks.
One advice I have here is – do not pick a language/framework to educate yourself. You can try to learn from a hobby project – but not with a startup. The honeymoon period is only till your launch date when you can learn/play/experiment. But after launch you cannot go back on any of your decisions – and you cannot afford to have downtime, bugs or incomplete features – customers these days are spoilt with high quality and feature rich applications like Gmail, Facebook etc. and they will expect the same out of your product too. So picking a language/framework where you are The Guru will save you from lot of trouble.
Database – MySQL,PostgreSQL

Tough choice here. Both are equally good. MySQL wins the popularity contest.
Javascript Frameworks – Dojo, MooTools,Prototype,Scriptaculous

Try looking at the showcases each framework provides and also look at the sample code. Pick the one that will suit your design and also factor in the size of the compressed file. I do not understand why the browsers won’t include the javascript framework in their installers.
Development OS – OS X, Linux, Windows

Sometimes you are forced to work with an OS ( Windows because of Nokia PC software which will not work in linux). Some times you have no choice but to work with an OS ( linux for hosting / build machine ). Most of the time, for a startup, you will not have money for luxuries so you can only drool at OS X screenshots. Sigh.
Hosting – Shared or Dedicated

Avoid shared hosting. It will be the cheapest option – but you will have trouble later with ip address being blacklisted because a spammer was sitting next to you. Dedicated hosting costs a little more but it will be worth it and also you get full control.
GWT

A developer’s dream come true – need not touch javascript. If you choose GWT most of the tech choices are already made for you.
HTML/CSS : Table vs DIV

I don’t have enough expertise with DIVs so I built my layout with Tables – simple as that. Even though I hear lot of advantages of DIVs I decided to go with Tables – looks great even when browser is resized, resolution is changed, some content decides to grow out of hand etc.
Richeditor frameworks – YUI Rich Text editor, TinyMCE, NicEdit

No clear winner – each has its own quirks and strong points. This one you can easily change even after going live.
IDE – Eclipse, IDEA, Netbeans

Perhaps IDEA might be the first software license I purchased. There are open source alternatives for almost everything – Office, Photo editing etc. But IDEA burns all the open source alternatives to ash with its blazing speed and shortcuts.
I guess this covers most of the choices I think I made. Do point out any choices I might have missed and any better alternatives you have come across.






Why PHP?

I have decided to build the online portal in PHP, supported by Apache, MySQL hosted on Linux. The most cliched LAMP model. 

Did I consider other players?

* Ruby on Rails : It was very much on my plate. I have done small utilities ( a server status monitor and a code snippet repository ) in rails and was blown away by the speed and simplicity of doing things. However 2 things went against RoR.

ORM : My last project was a .NET project on Hibernate. It was a 2 year old project and already it felt like a legacy application with things tuned for performance to the maximum. They had crossed the return on investment period of Hibernate ( when relations stay simple at the beginning of any project ) and now were paying heavily for having Hibernate – performance, complexity, things moving to stored procedures..the usual pain points. So active Record did not interest me – being a one man army I did not want battles couple of months from now when I have to hack to implement a feature.

Server support:  Nothing can beat mod_php running on Apache. I had to configure nothing. zilch. With ROR things are still emerging – and I do not have the confidence in this space. A good part of my time does go in administering Apache but its something I am quite familiar. I neednot  muck with monit or spend lot of time playing with mongrel (a cluster inside one node!!) to have my app working. Apache just sits there smiling at me doing its work super efficiently. 

*Java : I am more familiar with Java and its framework than PHP. But the pace of development, team that is required, hosting requirements is just not feasible nor affordable. When this portal takes off big time I will rewrite it in Java – with a team. That will scale well, be stable – rock solid, and well maintenable. But the goal here is to bring something out as fast as possible, give it to as many people as possible and create a mind space. 

*ASP.NET : Forget it. I will not recommend it to anyone – even if I get a 1 billion dollar project to redo microsoft.com. ( well on second thoughts I might reconsider 😀 – I am not Howard Roark !!) 

Hosting : LAMP Hosting is cheap. I decided to go with a Virtual Private Server – gives me lot of freedom and flexibility. It takes some effort and linux know how – but its worth the trouble. More on this later.

In conclusion Php suited me well for the portal I am building – fast and quick ( but dirty like hell imagine code spread all over the place : $this->some_function($this-variable);  It hurts the eyes !! ) 

Next post : How I set up my office space for under 500Rs !!