Continuos Integration

Recently we did the setup for Continuos Integration for our apps at Sapnasolutions. As you might know Continuos Integration is one of the major practices of XP. We were evaluating some of the CI tools like CruiseControl and Integrity and Hudson. Though I still have not tried Hudson which everybody is recommending, our purpose has been served well by Integrity + report card combo.

mmm… actually in theory I liked CC better then integrity as CC has out of the box support for metric_fu. But for Integrity one have to setup the report_card site. Also as far as I got the benefit of Integrity is just that in it you can identify which commit exaclty has broken the build as it runs build on each commit whereas CC works on push. But the Integrity+Report card takes much time as compared to CC to setup.

For us CC coudnt become an option as on our server where we have Ruby Enterprise Edition whose default path is different then normal ruby CC is not able to pick the already installed gems. So when I try to run metric_fu rake task metrics:all it does not identify any of the required gems(rcov reek roodi flay flog)…Though the task run fine in the repo on server…

Anyways will keep you updated on any other tool (specially Hudson if we can have java on server) I try…Till then let Sapnasolutions build their dreamz in Integrity 🙂


The First week @ Pune


, , ,

It was a great transition  from the crouching heat of Delhi to pleasant rains of Pune. But it brought cold to my son and hubby :(. So the week was quit hectic for the whole family. With Hriday trying to get settled in his Day-Care, Nitesh trying to indulge more into his son’s activities and me trying to create a balance between home and new office.

But in last the experience is good. The people at Sapnasolutions are nice, understanding, fun loving & enthusuastic. though I still have to have more interaction with everyone. Here  I had selected to give try to the most difficult task of my life. Its about which existing socialnetworking open source of Rails can we use for our new quite big project. And I ended up with trying to merge Community Engine and Spree.

You think I am insane. mmmmm I dunno but I thought it could be a great achievement if I can do it. Its difficult and blowing up my mind though its been just a day since I m trying on it. Lemme try it for some more time then probably you can call me Insane for sure 🙂

My First Switch

This is the second last day of mine at Vinsol. And right now I am trying to write a post defining that I am leaving Vinsol tomorrow and going to join another promising startup SapnaSolutions at Pune very soon. 


I spent more then 4 years in Vinsol. The time here was good, filled with different kind of experiences.  I am looking forward to a great experience at SapnaSol as well. SapnaSolutions is also devoted to RoR development and also deals in mobile app. Lets see if I can also get some exposure of Mobile app there.  

While I am switching I have decided to set some goals for me.

  • I will try to post more techy code stuffed posts of my daily encounters which I sometimes try to escape from sometime.
  • Learn 4-Wheeler Driving and own a Driving License.
  • I would work in refining my skills as the Product Owner/Project Manager.
  • I always wanted to develop a product of my own I have several ideas in mind. By next year I ll have to decide which could be the most feasible and promising idea and work over it . Also have to work on finding finances.

    I hope in next year I will be writing some posts updating everyone on these points. Keep in touch…

    Monit apache with passphrase enabled SSL


    , , ,

    I wanted to montior my apache instance with Monit . Its so simple…

    I just had to add the apache related configuration in monitrc file and start monit.

    Looked like it worked…BUT…


    When I looked at It shows me something like ” ‘apache’ process is not running.” I realized that as My server has purchased SSL certificate and for this we have given a passphrase. So When ever apache starts, it asks for the pass phrase for verification. When monit tries to run the apache it also sends the dialog box of asking the passphrase which monit is unable to give. Hence I can not monitor Apache with pass phrase enabled SSL via monit. 

    Now when I sit to resolve this issue. I have an easy option : Repurchase the ssl with passphrase as nil. But that is costly and is not safe at all. So I looked for some other solution. And I found one in name of  ‘SSLPassPhraseDialog‘.

    One just has to add one line in their apache2.conf file :

    SSLPassPhraseDialog exec:/content/ssl/pp/pp.out

    This file should contain something like:

    echo 'mypassphrase'


    and make this file executable by:

    chmod +x passphrase_file
    Done…Simple na. Now you can just restart your apache and check that its not asking for a passphrase now 🙂

    Monitoring Passenger


    , , , , ,

    I have recently made some changes in my staging server to get 3 times better response. Would like to share the points with everyone so that other don’t have to do so much of googling that I did.

    So, I have my staging(256MB) and production server(2GB). On staging when I had MaxPoolSize of 6(default: Max number of threads spawned by passenger). My server gets killed in 10 consecutive requests coz of use of lots of swap. So I had to make it to 2 as passenger doc suggests to make it 2-3 for 256 MB server.


    But now one more problem arise, that response time for the request after long time(which could be anything > 10mins) was very high around 30s. Which is quite unacceptable. I found the reason being the MaxPoolTime(Max time in which the threads got killed if no request encountered). And once all the threads got killed and then comes a request  it takes whole lot of time to start these:

    1. Framework Spawner

    2. Application Spawner

    3. Then Spawn a new thread


    The solution to this problem  was not letting one of the thread get killed. I have searched a lot for this but got noway by which this can be implemented. So I have to find a work around. Which was… to set the Application Spawner not getting killed. This can be achieved by setting APP_SPAWNER_MAX_IDLE_TIME to very large(say 999999). 

    I have received amazing improved performance by applying this. Would you like to try???

    The open Friday @Vinsol


    , , , ,

    From today we are going to start the open fridays @vinsol. That means the second half of Fridays will be open for anything. One can do anything except work. Discuss, play, watch movies.

    So today we are all scheduled to watch a famous movie Aardvark’d: 12 Weeks with Geeks (2005), the movie about the development of Copilot at Joel Spolsky’s company, Fog Creek Software.

    Lets see how it goes…

    Merb Slices in Rails 3: The goodies coming along more efficiently


    , ,

    As most of you already know Merb Slices are the mix of merb app and plugin, which carries feature goodies of both. Its the part of an app which can itself work as an application and can be incorporated in any other merb application. For example remember Rails engines. It gives the same functionality but is 100 times better that that.

    While Merb is merging into Rails. In Rails 3 we will be witnessing this remarkable feature of Merb in Rails as well. If the planning of new core team goes well...We will be able to mount any of our rails application in another very easily. Core team has given a tentative date for Rails 3 by next RailsConf in May. I can not wait to explore all these  good features. Just keeping my fingers crossed…

    More papers @ Vinsol


    , ,

    We at Vinsol have been trying to find the best suitable strategy which merge transparently in Vinsol work environment. Manik calls it XPrum, which sounds kewl. Its our extract of practices from Scrum and XP.

    Extreme Programming (XP) is a little different approach towards agile programming what we usually follow at Vinsol. It focuses on simplicity basically to an extent that it advocate use of paper more than any technical tools. We realized its much more handy and visible to notice so we adopted it immediately. We liked the workboard for ticktes idea of SCRUM so we have applied them for our XP stories.

    The scene at vinsol can be seen in these pics…

    Constant feedback & communication is key for both strategies so our major focus is that. And our goal is to estimate better and accurately and deliver the best code.

    Coming year our focus will be more on BDD, Quality of Code and Developer’s satisfaction. If we achieve these three, I hope the clients will ultimately encounter better experience with Vinsol.

    Merb + Rails == Great Software


    , ,

    So you heard the news??? Yes, Merb and Rails are going to merge in Rails 3 If thats true it will be a great merger o all times in ruby community. The largest framework of Ruby glued with the fastest one will be cool.

    One of the thing which I loved in Merb is its agnostic feature. Specially ORM to quote. As I found Datamapper to be more efficient and useful then ActiveRecord in Rails. If we can use Datamapper in Rails it will be the coolest thing.

    While trying Merb I also felt like most of the things are implemented in the same way as in Rails. So the basic difference is just in the values Merb advertise or rather built on …

    * Being Agnostic

    * Prefer Plugin

    I am just waiting for Rails to adopt those values so it could be more efficient and more lovable 🙂

    Lets try Extreme Programming-Day 1

    Well I am reading a book on XP (Extreme Programming)currently and by almost every page its quoting the best amongst the good programming practices. The great part about XP is that though it is named as XP, if we apply the same practices in general life it can make our sailing smooth. I will be quoting some of them here time by time.

    So today’s quotes are:

    “XP is about the process of becoming more of our best selves and in the process our best as developers.”

    “Good relationships lead to good business.”

    “Leave yourself exposed and prepare for success. Dont scare.”

    “People aren’t computers.”


    “Its not my job to manage someone else’s expectation. Its’s there job to match there expectation. It’s my job to do my best and to communicate clearly.”

    “XP is fully appreciating yourself for total effort today and striving to do better tomorrow.”

    What I learnt today:
    There are values which programmer thinks are good for program/team/company/himself. And there are practices which make them apply these values. These both are complimentary. Good practice enhance the role of value and good values escalates the adoption through practice. Together they become principles.