While developing a fairly complicated application such as a social network, starting with an existing platform or a framework can prove quite useful. Frameworks handle a lot of low-level stuff so that we can concentrate on the real deal that the application has to offer. So before starting to develop such applications, choice of the platform or a web framework quite clearly becomes an important decision.
This post is about an evaluation that we carried out at kodeplay for deciding the best-fit opensource platform for a social network application we were looking to kickstart. Although we had past experience of working with quite a few frameworks in php and java, it was important to make sure that we knew what others are capable of too and that we are not missing something good offered by them. Language was not a problem as long as it was not radically different from what we are good at for eg. python, ruby were fine but erlang or clojure were out of question. To some extent we were also looking to take advantage of existing social network solutions or as they are called social network engines.
So after considering some platforms, it finally narrowed down to these four -
1. Elgg
2. Oxwall
3. Pinax (based on django)
4. Diaspora (based on Ruby on Rails)
But before that, A Disclaimer!
These frameworks/platforms were evaluated keeping the task at hand in mind. The reasons we based the final decision on are subjective. So this blog post will not answer questions such as “Which language or framework should I learn ?”. It will definitely not answer the question “Which is the best framework or language?” because we believe there is no answer to this question! It compares frameworks and out-of-the-box solutions together and we are aware that we are, and infact, want to actually compare apples to oranges.
The evaluation was based upon the following factors broadly
Required Features already included or externally available
A social networking app can grow into a monster one with lot of different functionalities. So the basic thing we were looking at was, how much of what we require is already present in the system, even if its not exactly what we need.
General Approach of code
Ready made things are of no use if they are pain to customize to specific needs. There are other things that matter too such as readability (the ease of understanding the code by reading), ease of customizing the existing features and modifying the existing theme, modularity of features, well tested code (unit and functional). We were also concerned about how different aspects of web programming are implemented such as MVC pattern, Database design and Db layer used, templating, forms etc.
Familiarity of language/framework and nature of the learning curve if there.
Our competence at the moment is mainly LAMP and JAVA. Its important to keep the learning curve in check too.
Ease of deployment
Again, coming from a PHP background, where deploying code is so easy, we needed to consider this as well.
Presence of an active community and source code availability (bonus points for source code hosted on Github
)
Comparison
| Approach/Feature |
Elgg |
Oxwall |
Django+Pinax |
Rails/Diaspora |
| Language |
PHP |
PHP |
Python |
Ruby |
| Framework |
own |
own |
Django |
Rails |
| MVC |
not exactly |
yes |
MTV of django |
MVC |
| Custom Routing/pretty-urls |
no (convention-tied) |
yes |
yes |
yes |
| Database Arch. |
entity+metadata tables |
normal |
normal |
normal |
| Database Layer |
magic! |
DAO + Service + Entity |
ORM |
ActiveRecord |
| Templating |
horrible |
Smarty |
Django TS |
dspra: haml,sass |
| i18n |
yes |
yes |
yes |
i18n gem avlbl |
| Modular apps |
yes |
yes |
yes |
no |
| Plugin system |
yes |
yes |
no (apps instead) |
no |
| Source Code Hosting |
github |
private bitbucket |
github |
github |
| Community |
active |
active on forums |
active |
active |
| Development |
open |
closed |
open |
open |
| Ease of Depolyment (sub) |
easy |
easy |
unfamiliar |
unfamiliar |
| **Features Required** |
|
|
|
in diaspora |
| Events |
yes |
yes |
available |
no |
| Blogs |
yes |
yes |
yes |
no |
| Polls |
may be available |
no |
no |
no |
| Question/Answer |
available |
no |
available |
no |
| News Feeds/Wall |
yes (activity) |
yes |
available |
yes |
| Notification System |
available |
? |
django-notification |
yes |
| Bookmarks |
available |
? |
yes |
no |
| Forums |
available |
? |
available |
no |
The Result!
The above table pretty much captures the differences between these platforms and our views about them.
Long story short, the winner in the end was django/pinax.
To summarize briefly as to how the selection was done -
Elgg that initially seemed like the perfect fit was ruled out because much of the approach it follows is not what we subscribe to (mainly db design and html building using string concatenation) plus it looks like some learning curve to make it work and look the way we want.
Oxwall looked quite nice but it would mean learning a custom framework that is very unlikely to be used anywhere else in future. Moreover, Oxwall’s development is not quite open but happens over a private bitbucket account for certain reasons.
There is a lot of buzz around Diaspora and it looks good too but lost due of following reasons -
1. code still in alpha and a lot of reviews about bugs and security concerns with the initial release (which may or may not be true as of today)
2. few problems such as, no support for IE and https mandatory as the devs themselves admit.
3. familiarity of python/django > familiarity of ruby/RoR.
4. A quick search couldn’t find a way for developing modular applications in Rails (as in Django)
5. Diaspora uses a lot of stuff unknown to us which might result in the learning curve of these tools getting on top of the rails learning curve.
eg. haml, sass, thin, resque and what not. Sometimes seems to be an overkill as well.
Frankly, it was not entirely an unbiased decision between diaspora and pinax. Ruby on Rails wins in some aspects such as, built in support for testing. But surely, Django is a great framework and comes with great stuff such as the extensible admin app. There are python alternatives to the good things that Ruby offers such as Lettuce(Cucumber) and Fabric(Capistrano)
We could find a lot of “apps” both inside and outside pinax for the modules that we are planning to include for now (see table).
So Django has been decided. Lets see how the development goes
. In the meanwhile let us know about your thoughts on the same.
Tags: comparision, diaspora, django, elgg, python, rails, ruby, social network engines
Posted in Development > From Our Blog on November 17th, 2011 by vineet>
[written by chirag jain - @jain_chirag04]
This post is for those who wants to upload a database of more than 2MB
With the default settings, phpmyadmin does not allow you to upload a database of more than 2mb. This setting can be changed but we avoid this for security reasons.
So here’s how you can do this using command line.
First run command prompt.
goto the bin directory of your mysql installation.
In my case its here: E:\wamp\bin\mysql\mysql5.1.33\bin
Run the below command in command prompt:
mysql -u username -p database_name < textfilewithsqlstatments.sql
This will ask you to enter the password.Enter the phpmyadmin password here and it will upload the files and execute all the sql commands in the .sql file.
Note: The path to the textfilewithsqlstatements.sql has to be correctly given in the command.
Posted in From Our Blog > linux on September 22nd, 2011 by Karan Ahuja>
Do you waste a lot of time fixing your website on IE ??? Then here are some best practices which will reduce the time spent to fix your website on IE
1. Never to give height to <tbody> element
tbody { height: 200px; }
The above css will give a height of 200px; to tbody (if the content is less than 200px height), but IE will give the height of 200 px to every row <tr> of the table
2. Any dom manuplation should be done after dom is ready
<html>
<body>
<div>
<script type=”text/javascript”>
var ele1 = document.createElement(’div’);
document.body.appendChild(ele1);
document.write(”Testing”);
</script>
</div>
</body>
</html>
The above code will throw ”Operation Aborted” error on IE, but will work fine in other browsers. Instead of it call a function on Load event of body. More detail is here
3. Always check for the IE Compatibility when trying in built browser functions
for E.g. window.stop() will work in all other browsers expect IE. For IE you will have to do something like this
if(navigator.appName == “Microsoft Internet Explorer”){
window.document.execCommand(’Stop’);
} else {
window.stop();
}
4. Easy way to detect IE
add these line at the beginning of js code -
var IE = /*@cc_on!@*/false;
then you can use if(IE) everywhere instead of if(navigator.appName == “Microsoft Internet Explorer”){
I will update this post for more points. If you also have any points then share it through comments
Tags: IE Compatibility, IE fixing, Operation Aborted
Posted in From Our Blog on April 30th, 2011 by jimy>
As the ecommerce market size in India is growing beyond expectations (http://www.quora.com/What-is-the-total-size-of-Indias-e-commerce-market-excluding-travel-and-classifieds), an increasing number of merchants , businesses , corporate houses are looking to integrate ecommerce with their business .
The choice of payment gateway is quite crucial to your new ecommerce platform . Indian payment gateways cannot be started immediately like paypal and require a signup and approval proceedure of 3 to 4 days for initial setup along with a setup fee
Paypal is the most cost effective method but the shoppers will see the prices in USD currency on the paypal interface where they are redirected to complete the payment through their credit cards .
CCavenue and EBS have the same range of costs and CCavenue is the one used more widely . Flipcart uses both CCavenue and EBS
Also there is a flurry of activity recently to switch from paypal due to the following rules to be acted upon from march 1 ,2011
1) sellers have to withdraw complete amount within 1 week of transaction
2) Any balance in and all future payments into your PayPal account may not be used to buy goods or services
3) In one transaction – buyer can only pay upto $500
Complete legal rule is here - https://www.paypal-apac.com/india/
To decide on your choice , you can refer to the below table .
clearly the choice is between – ccavenue , EBS and direcpay .
Direcpay is a Times of India initiative and is gaining users very rapidly .
A payment gateway similar to paypal for India with low startup fees would be like a dream come true for Indian merchants . Zaakpay is an interesting upcoming venture in this space .
which payment solutions have benefitted your online business ? what are the features you wish to have ?
| Feature/ provider |
CCavenue |
EBS |
Transecute |
Direcpay |
Paypal |
| Setup fee |
3 schemes :
7500/25,000/40,000 |
5 schemes
6k/12k/18k/24k/30k |
0 |
minimum – 7500 |
0 |
| Comission Cost for credit card payment |
3 schemes
3%/5%/7% |
6%/5%/4%/3.75%/3.25% |
5 % |
6 % |
4 % |
| Comission cost for bank payment |
4% |
6%/5%/4%/3.75%/3.25% |
NA
Bank payments are not accepted |
Awaiting data |
|
| AMC Cost |
3 schemes:
1200/2400/3600 |
2400 |
0 |
2400 |
0 |
| Set up proceedure |
Signup , approval
Can be set upped within 3-4 days |
Ability to go online in 5-6 days |
Send documents , Approval
2 weeks |
Signup , approval |
fastest |
| Allows customers to pay in ruppees |
yes |
yes |
yes |
yes |
no |
| Credit cards accepted |
VISA*, MASTER CARD*, AMERICAN EXPRESS, DINERS CLUB and JCB CARDS |
Visa, Master & Diners Card |
Visa ,mastercard |
Visa , master card , diners |
|
| Debit cards accepted |
Visa , mastercard |
no |
no |
51 debit cards
http://www.timesofmoney.com/direcpay/jsp/dpOurPartners.jsp |
no |
| Bank payments accepted |
39 banks
http://www.ccavenue.com/content/indianrupees.jsp |
Citibank , icici bank,sbi |
No |
15 banks
http://www.timesofmoney.com/direcpay/jsp/dpOurPartners.jsp |
no |
| ATM cum debit cards accepted |
Canarabank,citibank,indianoverseas bank,Punjab national bank , state bank of india , union bank of india |
Hdfc , hsbc , icici, union bank,axis , alhabad , dena , corporation,pnb , kotak |
no |
http://www.timesofmoney.com/direcpay/jsp/dpOurPartners.jsp |
no |
| Is developer sandbox available |
no |
no |
no |
no |
yes |
Posted in From Our Blog on April 1st, 2011 by Karan Ahuja>
We just finished modifying an openfire plugin for a real time ecommerce requirement in our project. It gave us a chance to peek into the internals of technology we use (openfire) and we were really glad . The purpose of this post is to share what we learnt so that it can help anyone else seeking knowledge of the subject

Openfire is an XMPP (Jabber) server written in java. If you are reading this article, chances are that you already know about XMPP or are at least
interested in developing with xmpp . If not then its a technology worth knowing as it makes instant messaging and
real time collaboration possible. Its also one of the many things that powers all the fancy real-time stuff that we see happening all the
time on google and facebook. In our project, which is an online social shopping mall, openfire powers the real-time features such as
one-to-one chat between sellers and shoppers, store shoutbox, group buying, real-time notification and
activity feeds.
Coming back to openfire, the functionality of the server can be extended by means of plugins which makes it really powerful.
A lot of plugins are available that meet general requirements but if you are using xmpp extensively in your application, there may
be a case that you need to modify the plugin to add a specific functionality. This post will throw some light on how to do this.
Getting the source -
The first thing to do is to get the openfire source code which also includes the source of all officially available plugins.
check-out the code from their svn in eclipse
http://svn.igniterealtime.org/svn/repos/openfire/trunk
Renaming the plugin -
Plugins can be found under the plugins namespace.
For eg. in our case the plugin was Monitoring service plugin that archives messages sent over the server. It can be found in
plugins.monitoring namespace. All the plugin info is specified in the plugin.xml file along with rules to add changes to the user interface in the admin
console.
(To know more about complete structure of a plugin directory refer to this guide
http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/plugin-dev-guide.html)
Plugins can be renamed by changing the name property in this file.
But when we did it, we made a copy of the plugin and kept the original plugin which meant that the directory name was changed and thus the references in code
had to be changed as well. If you choose to do it this way, then its necessary to make sure that while renaming the package, leave the “update references”
checkbox blank when eclipse prompts you with an option. otherwise it will try to change the package declaration which will cause compilation errors later.
Although I am not too sure about this but I think we could have avoided changing the class name and references by simply modifying the plugin and just
changing the name inside the xml file instead of renaming the package.
After renaming the plugin, you are free to do whatever modifications you wish to do. In case you wish to add some user defined variables, then its very easy
to make changes to the admin console user interface as well. This can be done by modifying the jsp files inside the src.web interface.
Remember that Openfire has multi language support, so it would be a wise to add text to i18n files instead of hard coding it in jsp files.
Rebuilding
Openfire uses Apache Ant (http://ant.apache.org/) for build processes such as compilation and deployment. So you will also need this tool.
Now, in simple words, Ant does what we want it to do by reading an xml file called BuildFile.
The buildfile for Openfire and its plugins comes with the source code which we give to Ant and it takes care of the rest.
But before we build Openfire plugin using Ant, I would recommend you try out building a simple Hello-World-type. This will require you to
create your own buildfile which will help in understanding Ant better. I found this (http://www.roseindia.net/jboss/10_minutes_guide_to_ant.shtml)
tutorial quite useful when I want doing it.
Once you have finished this tutorial, you are all set to build the Openfire plugin. Locate the buildfile in Openfire/build directory.
Open the terminal and go inside this directory. Now you may run different Ant commands depending upon what you are trying to do -
For building openfire -
$ ant openfire
For building all plugins -
$ ant plugins
This will create two new directories inside your main Openfire directory named “target” and “work”
Find the .jar file for your plugin inside the target/openfire/plugins directory
If ant finds any compilation errors in the code, it will throw them in the terminal itself and stop the compilation. It will also
show the line numbers etc for debugging. In such a case you would want to delete the files created due to incomplete compilation
So just execute this command
$ ant clean
It will delete the target and work directories. Fix the bugs and run ant command again.
Uploading and Activating the plugin
To upload your modified plugin, go to the Plugins section inside the Openfire admin console. At the bottom of the page, there is a form
to upload plugins in .jar format. When plugins are uploaded this way, openfire copies it to plugins directory inside the Openfire “Home” directory
and also extracts it there. The location of the Home directory will differ depending upon the OS. Here, on Ubuntu desktop, its /var/lib/openfire
Posted in Ecommerce > From Our Blog on February 8th, 2011 by Karan Ahuja>

At Kodeplay , our esteemed clients come up with queries,ideas during the initial stages of an ecommerce project . As they venture into the world of online
retail , we are happy to help them make the right decisions after studying their requirements and business model . We have compiled a list of FAQ’s for
Businesses wanting to chalk out a strategy to hit the Bulls Eye with their first attempt at starting a web store .
1)Which ecommerce software solution will be the best for me?
In order to get a web store up and running quickly , It is important to start with the most appropriate out of the box solution .
As per the Business rules and user feedback customizations can be added .
Open source solutions have the advantage of a wide community , less turn around time for customizations,available plugins,modules for plug and play.
Closed source solutions can be looked at for high scalability ,security and use cases involving integrations with legacy systems, integrations with existing architecture
The most widely used open source ecommerce solutions currently are :
OSCommerce , Zen Cart , magento , VirtueMart ,Uber cart ,WP commerce, prestashop , opencart ,CS cart .
The following points must be considered to choose an open source solution :
1)Level of customization required to implement Business Rules
2)Choice of web server , infrastructure
3)Skills required for possible customizations
4)Expected traffic , end user preferences,ease of use
It is very important to use the right opensource codebase for the right job.
To avoid changes , rework it is best to evaluate the open source solutions in detail or hire an expert .
2)Can we have the same web store for multiple languages across countries
Yes . Most open source solutions as well as propreitory systems offer language packs which can be easily integrated.
In case a specific language pack is unavailable , Translation services will have to be subscribed to .
Cusomized modules should also use text from the language packs . The end users can choose a language of their choice from the frontend.
3)Will I be able to change the look and feel of my web shop instantly from time to time ?
This is an excellent idea during seasonal offers , festivals . It is best to create custom themes for specific events .
Themes can be switched from the administrator panel. The customized themes should be web standards compliant for better performance .
4)Can I bulk upload products from excel directly into my web store
Yes . This can be done with the help of available or custom plugins .
The excel file can be imported from the administrator panel and products will appear on the store frontend .
5)Can I change the marketing content or create emarketing spots on my web shop ?
It is possible to hook content management systems like wordpress with a web shop . Plugins also exist for open source solutions.
Marketing spots , Best selling products can be updated through the administration panel.
6)How do i set up Taxation rules for my web shop ?
Tax rates can be associated with targeted jurisdictions . Tax rules can be associated with the products .Selected products can be made tax free . Support for
multiple currencies is also present in the administration panel .
The end user can choose a preferred currency from the store frontend.
6)Which payment gateways should we integrate with ?
First we should identify the geographic locations we are targeting . We will then evaluate the payment gateways which support currencies of these geographic locations and are trusted by the users of specific locations . Payment gateway extensions to integrate open source soutions with popular payment gateways are often avaliable .
7)For paypal integrations should our buyers have a paypal account?
The shoppers will not require a paypal account . They will be redirected to paypal on checkout . After completing credit card payments on the paypal website the shoppers will be redirected back to your webshop .
8)Will i need an ssl certificate?
An SSL certificate will be required only when we accept payments on our website itself .
PCI compliance will also be required for this case . This can be obtained from reliable ssl , PCI vendors
9)Will we be able to create staff accounts or roles for product managers , sales managers , customer care ?
Yes. Users with specific roles and permissions can be created from the administration panel . This is an important requirement as you move onto scaling up and appoint staff to manage parts of the store . Ease of use should be verified for this feature .
10)How will we handle backups of our database ?
Periodic Backups for database can be implemented by exporting the database file from the administration panel . It is important to backup regularly . As Order transaction volumes increase ,automated daily backups should be set up .
11)Can we source products from multiple suppliers ?
Yes . User roles can be created for suppliers . The suppliers can then import a csv file to mass upload the products
12)Are there any security concerns while starting a web shop ?
Web Application security best practices should be factored in by the web developers . Penetration testing needs to be implemented before migrating the store assets to the server . Open Source solutions also implement best practices to avoid exploits . Payments are normally handled by the gateways so most of the exploits can be avoided .
13)How will I promote my web shop to increase sales .
It is important to integrate your web store with social media like facebook , twitter to create a community around your products . Allow your users to login through their twitter and facebook accounts . Update your social media pages with news about product launch , discount offers . A Customer database can be created . Newsletters with helpful content can be sent out .
Search engine optimization can be implemented to provide more visibility for your store content .
It is important to identify useful content for your shoppers and serve quality content through the right channels on the web.
14)Will we be able to add multiple shops on the same sites ?
Multi store mode or online shopping malls are not available out of the box . We have customized open source solutions to work as online shopping malls .
Please feel free to contact us for a demo .
Posted in Ecommerce on July 8th, 2010 by Karan Ahuja>
After installing FireFox (FF) the first thing I do (normally every developer will do) is search and install the addons.
Here are some handy addons a web developer must install.
1. Firebug

Firebug is considered to be the ultimate developer’s tool for Firefox. You are given a ton of web development tools to use from within your browser. You can explore, edit, debug, and monitor CSS, HTML, and JavaScript in real-time on any web page.
2. YSlow

YSlow analyzes web pages and why they’re slow based on Yahoo!’s rules for high performance web sites.
3. Coral IE tab

If u develop website in FF and also care for IE users then u will love this one. It enables you to use the embedded IE engine within tabs of Mozilla Firefox.
4. Web Developer

The Web Developer extension adds a menu and a toolbar with various web developer tools.
5. Measure It

Draw out a ruler to get the pixel width and height of any elements on a webpage.
6. ColorZilla

Advanced Eyedropper, ColorPicker, Page Zoomer and other colorful goodies.
7. X – Ray
See the tags on a page without viewing the sourcecode.
8. Font Finder

FontFinder is created for designers, developers and typographers. It allows a user to analyze the font information of any element on a page, copy any piece(s) of that information to the clipboard, and perform inline replacements to test new layouts.
9. Professor X
The Professor X Extension let’s you see inside a page’s head without viewing the sourcecode.
10. Aardvark

Cool utility for cleaning up a page (for printing or better viewing) as well as for web development. Displays a red rectangle on the element under the mouse — hit “w” to go wider (get the containing element), then hit other keystrokes to remove, etc.
Which Firefox Addons do you use?
Just leave a reply and tell us about your favourite FF add-ons.
Posted in Firefox on April 8th, 2010 by jimy>

As a developer coding in php on windows OS, at one stage you would want to switch completely to linux, for following reasons -
1) it’s a requirement
2) you use a linux server and want to get familiar with your remote server environment
3) no license fees.
4) you think its cool or geek or both.
Whatever might be the reason, using linux for developing php applications is definitely a plus because php was made for linux.
Likewise even I wanted to make a switch to linux for a number of reasons and was checking out various options like virtual machine and multiple installations on my windows machine just to play around and understand. But I took it up seriously only last week and decided that i would code our side project (which we work on saturdays) entirely on linux. So the target was to get linux (Ubuntu 9.04 also known as Jaunty Jackalope) at a stage similar to my existing development environment on windows ie. apache, php, mysql, eclipse, subversion (subclipse). In doing so, I had my fair share of the usual eureka moments, roadblocks and a lot of google search. In the process I found out a some superb resources which I wish to share through this post.
First of all let me tell you that linux isn’t difficult anymore. The gnome interface brings it very close to windows and no extra effort is required to figure out basic stuff like working with folders, browsing the internet or playing games that come with the package. In fact, I know many non-techies who use popular linux distributions like Ubuntu for various reasons, most importantly for reasons #3 and #4 stated above. But if you are a developer the interface might not take you far because you will be doing a few things that requires root access and for that, (as it seems so far,) Terminal is must .
So the first thing you would want to do is to get yourself familiar with a few basic shell commands. Here are a few tutorials that actually take you through the process rather than just mention to commands as facts.
http://jucato.wordpress.com/2006/08/22/ubuntu-classroom-command-line-basics/
These tutorials will get you rolling and if you are really determined, you will probably start enjoying the terminal.
The next important thing is to set up LAMP. The following links explains it better than anything else I could find on Google. If you follow this, believe me, LAMP installation will be a breeze.
http://www.supriyadisw.net/2006/12/lamp-installation-on-ubuntu
Now apache, php, mysql is set up and you can see ‘It works! ‘ when you navigate to localhost. If you havent figured out yet, this file lies in /var/www/ folder. So this is your document root. But http://localhost/phpmyadmin still gives a 404 not found error . This is because you have to tell apache that mysql client is there. So put this piece of code at the end of you apache2.conf file and restart apache.
Include /etc/phpmyadmin/apache.conf
Cool. As soon as this started working i thought i was all set to migrating my code to linux. But not yet because I had still to set up eclipse. So I downloaded eclipse PDT for linux and untared it by typing a hard to grasp command in the terminal. An important command to know now is how to deal with compressed files, although you can do it using interface as well.
So that got eclipse up and running but it didn’t allow me to have /var/www/ as my workspace if I didn’t launch it with root access. Doing a sudo launch every time was quite annoying. Also, the files inside /var/www/ couldn’t be edited by a non-root user. Then the ‘home/user/public_html/’ directory on a typical linux remote server struck me. So what I wanted now was to configure virtual hosts on apache2 and I found out this link which made it so easy.
http://www.debuntu.org/2006/02/22/7-virtual-hosting-using-apache-2
After this, eclipse can be started from a launcher on the desktop. Now the most painful part, Subclipse. I remember it was easier if not very easy on windows. With linux, you can clearly make out that the problem is some version compatibilty issue with Javahl library that subclipse uses, but it seems to be impossible at one point of time until you come across something like this -
http://en.newinstance.it/2009/05/13/making-eclipse-javahl-working-recompiling-subversion-from-the-sources/
So that was it. Lot of nice things learnt and finally all good stuff working smoothly on ubuntu. Hoping to have the entire team on linux now and the next few challenges are -
1) installing php and apache extensions so that all projects work in linux.
2) instaling the APE server
3) migrating to linux full time.
Posted in From Our Blog > linux on April 1st, 2010 by vineet>