DEVELOPING MODERN ONLINE SOFTWARE : A PROGRAMMER'S GUIDE