Skip to main content

The Bidder Journey

It was time for another Rails Rumble event, and I was looking for Ideas what to build. 

Through one of coding competition I came across a problem in which you have to write a algorithm to outbid computer. I am (always been ) fan of Computer Games, so I thought why not build a Game based on this problem.

Rails Rumble is a 48 hrs coding competition in which you have to build one Rails application.

At this point, I knew what to build and which framework to use, but I didn't knew how to built it or even its possible in Rails, so I presented my Idea in Open Source Friday .  I dry run my Idea on white board and played  a demo with Gautam Rege (@gautamrege) on white board. People liked the Idea, and suggested how it can be done. Sanjiv Jha got interested in this game and joined me in the journey.

The day of competition arrived 19 Oct 2013. Sanjiv and I coded 2 days , Stack used in Bidder is Ruby 2, Rails 4, Bootstrap 2.3, jquery 1.9, we used Pusher for broadcasting and receiving request.

Although we didn't won competition but we had good experience.

Bidder didn't end with the competition , we took it to next level. We open source Bidder and asked our colleagues to be part of Bidder by contributing. In one of Open Source Friday we discussed Bidder Issues and took feedback from ruby hackers.

Now, after all this hacking on Bidder it was time to check how Bidder will perform.We organised a Bidder event on Friday evening and invited all rubyist in the city to play Bidder , offcourse there was prize for winner. Around 25 rubyist played Bidder in this event. Rishi Jain (@jainrishi15)  joined in and helped us organizing this event . Pratik Shah (@pratik141988) won this event beating Sandip Ransing (@sandipransing) in Final.

This event taught us many things which we under estimated like Pusher limitation on request (we were using Pusher in free mode). This also made us think what if internet is slow or no internet ? and most important some serious issues were discovered in this event.


Now we knew that Pusher can't handle more than 4 users (10 connections) at a time, we have to look for alternatives. Jiren Patel ( ) come to rescue us and suggested to use Slanger . Slanger is open source implementation of Pusher.

Moving from Pusher to Slanger is really easy if you know how to setup redis server on cloud. No need to change your code.We hosted Slanger on Amazon EC2(free version) with help from Shailesh Patil (@patilshailesh) . After shifting to Slanger we can easily handle 25 users at time.


Men are mortal. So are ideas. An idea needs propagation as much as a plant needs watering. Otherwise both will wither and die.

Ruby Conferences  are the best platform to share Ideas among rubyist. RubyConf  India 2014 was to be held in about one month, we took the opportunity to share Bidder with every rubyist out there.


We got a booth outside Conference hall to showcase our Game. Thanks to Josh Software for sponsoring T-shirts for bidder winner and arranging us booth.



This was our Flyer outside Conference Hall.

We hosted 70 knockout Games and distributed 35 T-shirts to winners, response at RubyConf was overwhelming. Pramod Shinde (@pramod_shinde) , Aditya Shedge () , Siva Gollapalli (@sivagollapalli ) helped us in organizing this event.

So far it was great journey, thank you everyone who joined us in this journey and made it more awesome, we will be looking for more rubyist to join in.

Github : https://github.com/anilmaurya/bidder
Site      : http://www.playbidder.in/



Comments

Popular posts from this blog

Generating preview for pdf and images using Carrierwave in Rails

This blog post will cover how to generate the preview of pdf files using Carrierwave gem. Carrierwave gem has an inbuilt " manipulate! " method which reads the file and loops over every page.  This " manipulate! " method works as expected for a pdf having 300-400 pages but when I uploaded a pdf having 1000+ pages my machine crashed!!! That is when I started debugging the code and found out that there is an issue with the manipulate method. Here is my original code. class MyUploader < CarrierWave :: Uploader :: Base include CarrierWave :: RMagick def cover manipulate ! do | frame , index | frame if index . zero ? # take only the first page of the file end end version : preview do process : cover process : resize_to_fit => [ 310 , 438 ] process : convert => : jpg def full_filename ( for_file = model . source . file ) super . chomp ( File . extname ( super )) + '.jpg'

Software Engineering Vs Programming

When I was growing up,   Software Engineer and Programmer seems same term to me. Now after working a couple of years as a Software Engineer I think I can distinguish between the two terms.  Programming is a small part of Software Engineering.  Software Engineering include Understanding Requirement  Designing Software Organising code  Testing Software  Collaborating with other software engineers Writing good code is essential skill for being a Good software engineer but you can not neglect others skills as they are equally important for building good product. I read something similar in Software Engineering subject during my graduation, but none of the above make sense than. I think reading about software engineering is not the great way to learn about it instead build a lots of software and you will get a grasp of software engineering. What text books do not tell you about Software Engineering is : Understanding Requirement:

Creating an ember cli component addon for javascript library

Create addon with generator command ember addon <addon-name> example: ember addon ember-cli-holderjs Add bower dependency  create blueprint to install dependency  ember g blueprint <addon-name> example: ember g blueprint ember-cli-holderjs Two files will be created installing blueprint   create blueprints/.jshintrc   create blueprints/ember-cli-holderjs/index.js Edit blueprints/<addon-name>/index.js Add afterInstall hook to add javascript library package to bower.json afterInstall: function(options) {     return this.addBowerPackageToProject('holderjs', '2.9.0');   } Generate component ember g component <addon-name> example: ember g component ember-cli-holderjs This will create following files installing component   create addon/components/ember-cli-holderjs.js   create addon/templates/components/ember-cli-holderjs.hbs installing component-test   create test