This project targeted customers who had opted for certain advertisements they wanted in their emails. This involved complex algorithms that judged the authenticity of an advertisement and separating SPAM.
Most of the email advertisements today are SPAM, so genuine ads were segregated from the clutter. The project involved 2 sub-projects: Effort and Campaign Manager.
Much of email advertisement involves SPAM, so the challenge was to segregate the good advertisements from the bad.
Most advertisements are rejected by email filters, so the major challenge remained designing algorithms that could circumvent the e-mail filters to accept genuine advertisements.
BluEnt followed the Behavior Driven Development approach (BDD). BDD focuses on obtaining a clear understanding of desired software behavior through discussion with stakeholders.
BDD also helped communication between the development team and testing team by simplifying the language used to describe scenarios in which the software would be used.
Rspec was used to write executable examples of the expected behavior of a small bit of code in a controlled context.
Linux was used as development platform, which resulted in faster development and testing.
The choice of Ruby-on-Rails as the development framework meant the Agile Software Development model was followed, culminating in faster release cycles and better interaction within the team.
The tool involved 2 sub-projects:
Version 1: Effort
This phase involved implementation of a CRUD interface for various tables in the schema.
These operations were based on specified privileges, so as to safeguard against unauthorized access and/or modification of data.
A periodic background scheduler was used (Resque) to manage fetch/storage of new advertisement campaigns.
Version 2: Campaign Manager
This version involved generation of JSON response for advertisement data, and parsing the same. This generation/parsing of JSON response was restricted, based on privilege of the logged-in user.
ExtJS library was used, resulting in a better UI experience. Also, thelatest version of Ruby (1.9.2) and Rails (3.0.5) were used. PostgreSQL and Redis were used this time, MySQL support was dropped.
Latest Rubygems, such as Cancan, Devise were used to accelerate development, and faker was used to generate fake testing data.
A Sinatra application was also developed for fetching and browsing e-mail offers. The same was achieved within a short span of time.
Operating System: Ubuntu Linux Desktop 10.10 for development
Ubuntu Server for deployment.
Programming Language: Ruby 1.8.7 (for v-1), 1.9.2 (v-2)
Framework: Ruby-on-Rails (v 3.0.5), Sinatra (v 1.2.0)
Database: MySQL (for v-1), Redis, PostgreSQL (v-2)
Web Server: Mongrel (for v-1), Thin (v-2)
IDE for development: Netbeans (Linux)
Testing framework: Test::Unit (v-1), Rspec, Cucumber (v-2)
Ruby gems used:
Cancan (Authorization library)
Devise (Authentication solution)
Database_cleaner (Database clean up for testing)
Faker (Fake data for testing)
Faster_csv (CSV parser)
Json (JSON Parser)
Nokogiri (HTML, XML, SAX, and Reader parser)
Machinist (Test object creator)
Mail (Ruby DSL for mails)
Meta_where (Simplifying ActiveRecord queries)
Paperclip (File attachments as attributes)
Rcov (Code coverage analysis)
Resque (Redis-backed queueing)
Rspec (Behaviour-Driven Development)
rufus_scheduler (Job Scheduler)
Selenium (For automated testing)
Tzinfo (Timezone library)
Warden (Rack middleware)
BluEnt achieved the task with effective client interaction while following proper programming practices. Daily meetings with the client were scheduled and progress was properly charted.