Kapow! Media

Client Overview

Kapow! Media is an up and coming marketing services company with a clear emphasis on maximizing client response. It uses advanced analytics to tailor marketing campaigns on a customer-by-customer basis. It leverages both the active and passive communication by tracking users' reaction to content and frequency. This means that both Kapow! and partners will get the highest return on their data. It provides the best end-user experience ensuring that advertisements do not alienate good customers.

Project Overview

Project involved implementation of an online marketing tool. This project targeted customers who had opted for what advertisements they want, in their emails. This involved complex algorithms, that judged authenticity of an advertisement, and separating SPAM. Most of the e-mail advertisements today are mostly SPAM, so genuine ads were segregated from the clutter. Project involved 2 sub-projects: Effort and Campaign Manager.

Project Challenges

  • Much of the email advertisement involves SPAM, so the challenge was to segregate good advertisements from the bad.
  • Most of the advertisements are rejected by e-mail filters, so, the major challenge remained designing algorithms that could fool the e-mail filters, to accept genuine advertisements.
  • Technology is ever evolving; keeping abreast with the same would require certain extra effort. Latest version of Ruby language and Ruby-on-Rails was used, as also version control (Git), and key-value storage (Redis), in addition to advanced JavaScript library (extJS), and a light-weight Ruby framework (Sinatra).

BluEnt Approach and Methodology

BluEnt followed Behavior Driven Development approach (BDD). BDD focuses on obtaining a clear understanding of desired software behavior through discussion with stakeholders. BDD also helps communication between development team and testing team, by simplifying the language used to describe scenarios in which the software will 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. Choice of Ruby-on-Rails as development framework meant Agile Software Development model was followed, culminating in faster release cycles and better interaction within the team.

The tool involved 2 sub-projects:

1. 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. Hobo (www.hobocentral.net) was used, to speed up development. jQuery was used as JavaScript library, and database used was MySQL, along with Redis, for storing links.

2. 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, latest 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 very short span of time.

Technologies Used

  1. Operating System: Ubuntu Linux Desktop 10.10 for development, Ubuntu Server for deployment.
  2. Programming Language: Ruby 1.8.7 (for v-1), 1.9.2 (v-2)
  3. Framework: Ruby-on-Rails (v 3.0.5), Sinatra (v 1.2.0)
  4. Database: MySQL (for v-1), Redis, PostgreSQL (v-2)
  5. Web Server: Mongrel (for v-1), Thin (v-2)
  6. JavaScript Library: jQuery, extJS
  7. IDE for development: Netbeans (Linux)
  8. Testing framework: Test::Unit (v-1), Rspec, Cucumber (v-2)
  9. 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)

Competitive Advantages

BluEnt strives to achieve the task with effective client interaction, while following proper programming practices. Daily meetings with client were scheduled, progress was properly charted. Hipchat client was used for effective communication with the client (IM as well as voice), in addition to Skype (for video conference). Notes were shared with the client, using Evernote.

BluEnt strictly followed Agile Methodology for development, and preferred BDD methodology, rather than coding immediately. Specs were written for the desired behavior, and then code was written to achieve the desired behavior, followed by code refactoring. Also, proper testing meant firmer code base. Selenium was used for automated testing of the application.

BluEnt insisted on development using Linux platform (which is currently the OS of choice for developers). Also, ideas regarding schema were encouraged, and Redis was introduced as key-value storage. Also, other Ruby gems were used to ease development, so as to emphasize Ruby-on-Rails principles of Convention-over-Configuration (CoC) and Don't Repeat Yourself (DRY).

About BluEnt

BluEnt is a technology and knowledge management company based out of US, with effective client management locations in Delaware, Houston-Texas and New Delhi. With more than 50 resources, BluEnt provides a wide array of design, development and maintenance services to the clients worldwide, from strategic consulting to large outsourcing engagements.

BluEnt offers a unique blend of design and development experience, technical and project management skills, and innovative delivery approaches to satisfy the work requirements of the clients. We have flexible delivery models (Fixed cost/ Hour Basis / Dedicated) suitable for your projects requirements. To know more about us, visit our websites: www.bluent.co.in and www.bluent.net.

Let's connect!

Reach out to us with your project requirements, timelines and budget. We'll get back to you quickly. Promise!