FaceBooker xd_receiver path

A team back here is buiding an application with FBConnect using Facebooker plugin. After successfully authentication from FB, this plugin expects xd_receiver.html (for taking care of cross domain issues)  in the same path where the current url is.

We have this file under / as www.domain.com/xd_receiver.html and hence login url for FBConnect from the homepage would work fine. The app also has a FBConnect button from /xyz page and this would fail as Facebooker was looking for xd_receiver.html at www.domain.com/xyz/.

We tried in vain to make this an absolute URL by modifying the init_string in the file fb_connect.rb. As a workaround, we have currently we have copied the same file in two places and the app is up and running with FBConnect.

Has anyone faced this before? Is there a better solution?

, , , ,

No Comments

Amazing Amazon EC2.

Amazing Amazon EC2..
We badly needed a new server for a demo and our existing server had some issues. Could get a Win2003 server in flat 10 minutes at 4 AM IST. Just cannot imagine such a QoS with traditional data centers.
“Jai Ho” to the power of cloud computing and to Amazon for making it so easy.

, , ,

1 Comment

Apache Tomcat OutOfMemory Exceptions - HeapSpace, PermGen Space

Came across an interesting problem and noticed that we usually treat all “tomcat OutOfMemory” issues by just adding the java xms & xmx options. This may not be right solution as this just increases the JVM heap space and hence would take care of the exception which is related heap space i.e.  Exception in thread “main” java.lang.OutOfMemoryError: Java heap space.

For the exception related to permGen i.e. java.lang.OutOfMemoryError: PermGen space, need to add one more option in JAVA_OPTS called MaxPermSize.

After adding all these options, here is what the entry for JAVA_OPTS looks like in the catalina.sh file.

export JAVA_OPTS=”-server -Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m $JAVA_OPTS”.

Each of these otions are explained below.
•    Server - Run the tomcat in server mode. (the default is developer mode)
•    Xms - Minimum java heap space
•    Xmx - Maximum java heap space. While running on dedicated servers for production instances, keep both these options the same to ensure better utilization of available memory.
•    PermSize - The initial permSize. (default is 64MB)
•    Max PermSize - The maxPermSize. (even here, it may be a good idea to keep the intial and the max value the same).

More information relate to OutOfMemory exceptions can can be found in the following articles.
•    http://www.freshblurbs.com/explaining-java-lang-outofmemoryerror-permgen-space
•    http://raibledesigns.com/rd/entry/how_do_you_determine_a

Some interesting discussions and articles relates to tomcat performance can be found at
•    http://tomcat.apache.org/tomcat-5.5-doc/jasper-howto.html#Production%20Configuration
•    http://wiki.apache.org/tomcat/FAQ/Performance_and_Monitoring
•    http://kinetic.more.net/web/javaserver/resources/wpapers/performance.shtml

No Comments

What’s in the name?

This may be true when naming humans and many other things but when developing software names used inside the code are very important. While developing software, what names you give to entities (classes, methods, variables, files, etc) inside your code have a big impact on how easy it is to deal with the program during development and later during maintenance, by yourself and other team members.

We mostly use a person’s name to associate a label to a face.  A person’s name may have a meaning but it does not tell anything about the person. As opposed to this, names used inside software program are expected to be meaningful and serve as an indicator of what the entities represent or are expected to do.
e.g.

  • An object of instance Customer should be better named as a customer rather than object
  • A method which is computing a total may be better named computeTotal or getTotal rather than some thing as strange as doTheStuff.
  • An customerId argument passed to a method should be better named as customerId rather than just id so that when someone looks at the method signature the argument meaning is clear

Looking at some one else’s code, or even looking at one’s own code after a long time, is a pain. In addition to that if the proper names are not used it becomes irritating and difficult to work with.

Names used in a program should almost always fall into 2 categories

  1. Noun: These are used to represent some concept that is modeled in the system.
    e.g Customer, Order, Bank Account, etc
  2. Verb: These are used generally to name functions, methods, procedures, actions.
    e.g register(), calculateTotal(), copy(), delete()

    There are some exceptions like Collection.size(), StringUtils.defaultString(), etc but its still better to stick to the convention of using verbs to describe methods, functions, procedures.

Names should be explanatory but at the same time overly long names should be avoided
e.g. registerUserSendMailAndSubscribeToNewsletter()

Correct names should be used from the start and not left as a TODO exercise.  Correcting names in a program later on is a difficult task as there may be dependencies  involved and this also needs further testing to be done. Also once a software is running fine no one is interested in doing this unless its a paid effort or is mandated by someone.

Last but not least, names must not have spelling mistakes.

So next time you are coding think before naming anything and not use the first name that comes to your mind.

, , ,

No Comments

Client FAQs

Just collating some of the questions that are asked to us by our potential clients.

ENGAGEMENT MODELS

Do you have or are willing to have the following engagement model

    One where your team works at our development site? (ONSITE)

      Yes

      One where our team member works at your development site? (Your Office)

        We are open to this but have never done this on a long term basis. Its usually been for a week or two max especially in the initial stages. This scenario has never arisen so far and we are surely open where there is a part overlap on both sides.

        One where our team is on our site and your team on yours? (OFFSHORE)

          Yes

          DEV CENTRE LOCATIONS

          Which cities are your development centres in?

            We have only one development center in Bangalore, India

            PRICING MODELS

            Do you have or are willing to have the following pricing model:

            Fixed Bid?

              Yes

              T & M?

                Yes

                FTE?

                  Yes. We are comfortable with all the three pricing models above. In out case, T&M and FTE work almost the same as we put a mutually agreed cap on the max hours per month that can be billed though the actual hours can be more as per the project demands.

                  Are you open to discussing the possibility of partnering with us to a certain extent where a percentage of the stake of our company is given to you in exchange for a reduced pricing?

                    Yes.

                    What are the additional taxes levied on billings on an Indian company?

                      Currently for any software provided & invoiced to a company to India, 10% service tax is applicable. This is liable to change based on government policy.

                      What are the additional taxes levied on billings on an US company?

                        None

                        How are payments to you, settled? Before contract start / Monthly / End of month / End of contract? (Please furnish as much detail as relevant)

                          For fixed bids, its milestone based. For FTE & T&M, its usually on a monthly basis.

                          TEAM MANAGEMENT

                          Which of the following elements of team selection and management can we exercise control over?

                          From candidates recommended by you, can we select our own team after looking at their CVs and after having personal and technical interviews?

                            We usually like to get into projects where we take the ownership of the delivery. Hence based on the project tech stack and focus we would suggest a team of optimal skill sets to you. We will share the CVs of the best team as suggested by us. However if the client insists on having more candidates to choose from and also are willing to accommodate an interaction with the client. i.e. we do not encourage a sort of recruitment kind of process from the clients side rather would like to make it a selection process with the initial level of screeing done by us.

                            From the team selected by us, can we let those go who are not performing up to our standards giving a 15-day notice to you? And in such an eventuality, would you be providing for replacement candidates within those 15 days?

                              We have stringent hiring standards (recruit laterally from the Top companies in India IT and also from the best institutes in India for freshers) and good post-recruitment trainings. We also do project based trainings as required. Hence most people are fully equipped to handle the project work. We have a continously running performance review process to identify these cases. Non-performers are put on PIP (performace improvement plan) and more often than not, they are back on track. In any case, your feedback on performance would be taken seriously and acted upon.

                              Do you have any clauses in your terms that disallow you from taking back team members from the ones selected by us, as long as we continue to pay for them?

                                We would be surely interested in continuing the same team. As a team we would ensure delivery and continued quality output which is the key part of a project.

                                Will we have access to other personnel on your team that have certain expertise relevant to us so that we can ask them for advice / guidance in their respective area of expertise?

                                  Yes. Internally there is a great deal of knowledge sharing that happens amongst various functions/teams. Based on your requirement, we can definitely get people with other skill sets on the project as required. i.e. our whole pool of tech and managerial talent is available for our clients on a need basis

                                  Do you have or are willing to have a model where the team members selected by us have the option of joining us full time at a later date?

                                    We have not faced with this choice before. However we can always evaluate the same when the situation arises and are flexible to arrive at an agreement to the effect that it benefits all three parties i.e. our employee , our client and us.

                                    TECHNICAL SKILL SET

                                    What other additional technical skill sets besides the ones on our site do you offer to us?

                                    Do you offer UI design for usability and studies with real target user forums and other allied services?

                                      We have resources with a good UI/UE skill set but have never done usability studies with target groups. We have expereince in working with consultants (hired by our clients) who have taken the onus of defining and designing the study and then we have successfully impemented the technical end of the same. e.g.In one of the project that we were involved with, the client is working with another vendor who offered this competency and we were all closely working integrating the feedback.

                                      Do you have experience in either designing or developing APIs for clients especially Web Service APIs?

                                        Yes. A host of the applications developed by us have web services APIs exposed. E.g. for an auction portal in Germany we have designed , developed and deployed more than 100 + Apis for integration with iPhone Apps, After sales third party software, third party Lister tools. We have even done Web Services Apis for a ticket booking portal and a insurance company in India

                                        Do you offer Performance Engineering services i.e. understanding performance requirements of system (like response time, etc.) under given conditions (like traffic, etc.), ensuring that such requirements are met reliably and that the system scales up to changing environmental conditions (like changing peak traffic, etc.)?

                                          Perf engineering is under the QA team and we have engineers who measure the response time under various load conditions. We have done PSR testing & analysis in many of earlier projects either as a part of our deliverable or even as a separate activity as the product / application was developed by some one else.

                                          Do you offer Quality assurance as a competency(setup and maintain infrastructure for testing and quality assurance) and also plan and execute unit, integration and system tests?

                                            Test automation is one of our strengths and we do use Junit and Selenium. Attached is a presentation which explains the entire gamut of QA/QE services that we offer.

                                            Do you help the client with hosting and maintenance of system infrastructure for production, test and live deployment?

                                              Our Operations team offers deployment and maintenance support. We are currently monitoring and maintaining applications developed by us for some of our clients.We do not host but can suggest some reliable providers. Also we are very comfortable in getting the applications running on cloud infrastructures. (eg: ec2, go grid, joyent)

                                              BUSINESS SKILL SET

                                              What business skill sets do you offer to us?

                                              Do you have services on offer to manage legal frameworks of markets, filing for Trade Marks and most importantly, for understanding and managing copyrights since this is a content driven product? - especially factoring elements of copyright management and security against plagiarism into the product?

                                                We have a basic understanding of this but not a competency to offer as a service. We do have links to the appropriate people in our network in India (especially in Bangalore) and would be happy to introduce you to them.

                                                Will you be able to offer services to help us with acquiring next stage funding when we are ready for the same?

                                                  We do interact with some VCs (mostly based out of India) and can put you in touch with them.

                                                  What other special services / infrastructure do you have on offer early stage startups like ours?

                                                    Over years we have worked with more than 20 startups(funded , Pre Funded, angel Funded etc) hence we have gained perspective over the push and pulls that a start up undergoes in terms of work priorities and deliverables , hence we have uniquely placed ourselves to be flexible with the same, you would find our whole engagement model tailored to the same. We use agile development there by adding a huge flexibility in release cycles, team size and also feature sets.

                                                    , , , , , , , , , ,

                                                    4 Comments

                                                    Neev Technologies featured in Pluggd.in

                                                    Neev was featured recently in Pluggd.in in a post that provided information about Software Development companies that work with start ups

                                                    Please find the post here

                                                    http://www.pluggd.in/indian-startups/elearning-development-and-marketing-companies-3765/

                                                    , , ,

                                                    No Comments

                                                    Neev at CeBIT 09

                                                    Neev had recently participated as an exhibitor at CeBIT 09. Here are some pictures of our stand at the event

                                                    We received a great response for the event and are now in the process of closing business from the leads that were generated at the event.

                                                    , , , ,

                                                    No Comments

                                                    Cloud Computing at Neev

                                                    There has been an upsurge in the work engagements that we are doing at Neev that are based on various Cloud computing platforms that are now available in the market.

                                                    Saurabh and Me had previously worked at Pi now decho where we were one of the select initial Beta testers for the Amazon S3 platform so have been hooked on to the cloud/utility computing bandwagon ever since.

                                                    In one of our projects we shifted Ninemotion to a Amazon EC2+S3 infrastructure since we had anticipated and got large loads and usage.

                                                    We are currently working with a startup which is looking at building software that will help optimise and manage Cloud infrastucture for heavy users of the same. This project has given us great knowledge and perspective on how to leverage the cloud infrastucture optimally for a variety of installations. e.g. while writing the test harness of the same we have tested(and stressed) various J2EE applications on range of Application Servers(various versions) such as WebLogic, WebSphere, Glassfish, Tomcat etc

                                                    Some other Cloud/Utility computing platforms other than Amazon EC2 , S3 that we have worked with are

                                                    During CeBIT 09 in Germany where we participated as an exhibitor we had a lot of enquiries specifically for the services that we offer in this space.

                                                    We are sure that the value proposition that cloud/utility computing offers will surely lead to more and more corporates and clients switching to this as a preferred mode of deployment.

                                                    , , , , , , , , ,

                                                    No Comments

                                                    Memory Plus and iPhone based development at Neev

                                                    Memory Plus” Neev’s first iPhone app - is now at #4 in the Education Section and #22 in the Puzzles Section on the Apple App Store.The application has had 9k+ downloads all over the world.

                                                    This is Neev’s first application that is available for download through the App Store and is the culmination of a lot of hard work put in by our in house iPhone Development team over the past year. We now plan to put up an App every 3-4 weeks into the App Store.

                                                    Some of the other interesting work that we have done for our clients as project engagements are

                                                    Auction Client - This was done for an auction portal in Germany. A User can view all the articles that are belonging to various categories in the client’s home page display and bookmark them , add them to his watchlist or even login and Bid and Buy them. The project involved integration with web services on the back end and uses all the iPhone / iPod touch usability features to the maximum to provide a great user experience.

                                                    Expense Management Tool - this was done for a start up in California , USA. Here a Sales person could jot down the expenses incurred on a sales visit / meeting with location based data being provided by a Google Map integration done by us. The expense data was then sent to the back end and collated and calculated appropriately.

                                                    , , , , , , ,

                                                    No Comments