Categories

Projects

Personal projects

Whenever I get time, I work on things that interest me. I was introduced to Ubuntu in July 2006 and have been hooked ever since and now, I can’t imagine life without it. I have hardly used another operating system on the desktop in the last 4 years. As I figured out how Ubuntu works, the many quirks that it comes with, I have learnt to get it to work according to my tastes and I have shared some of my Ubuntu hacking experiences here.

Here are a few other things that I have done:

General

Userscripts

Facebook

Jnaapti

Duration: April 2011 – Present

Jnaapti is my effort to bring about a radical change in the higher education system. Right now, I am working with engineering students, faculty members and corporates to evolve a new and more effective hybrid (online+offline) coaching/training process.

Jnaapti has an activity based model of coaching that is delivered via a custom product that we have built from the ground up called the Virtual Coach. The course is completely customizable according to the skill level of the learners and the skills they are expected to pickup. Each learner can take on a distinctive learning path during the program.

The whole philosophy behind the Jnaapti approach is that people should be self-reliant when it comes to learning and the Jnaapti Virtual Coach helps learners build this into their genes. Learners are taught “how to learn” keeping in mind the fact that, in this world where technologies change rapidly, change is the only constant and what is relevant now may not exist soon and re-training is expensive.

Currently some of the challenges that we are after:

  • Content management, contextualization and delivery
  • Learning patterns, interactive learning and training
  • Innovation in online applications
  • Code analysis and testing
  • Based on the feedback received from the Jnaapti VLE, I launched the Jnaapti Virtual Coach in Aug 2012. The Jnaapti Virtual Coach goes a step further than the Jnaapti VLE and looks at how we can scale the whole process of coaching. The Virtual Coach is built in Python/Javascript. It uses several open-source libraries including the web2py framework, jQuery among others. It also relies heavily on containerization technologies (LXC) that is part of the Linux kernel. It is hosted in Amazon AWS.
  • Launched the Jnaapti Virtual Learning Environment in Aug 2011. The Jnaapti VLE is a system that is used for managing activities of learners. The application is built using web2py framework and is hosted in Amazon AWS.
  • We also use virtualization technologies during our development and it is based on Qemu/KVM. This helps in keeping the development environment as close to the production environment as possible and also helps in having a cleanly replicable deployment.

Semgel

Duration: August 2009 – March 2011

Semgel, is a product to “research technology companies”. It is a tool that allows non-programmers to analyse data on the web, perform operations like drill-downs, filtering, and other queries to get to the data of choice, arrive at interesting conclusions and then share it with others. The capabilities of the product are generic and as such can be used for any kind of analysis of web data. Semgel uses Semantic Web technologies in the backend. So when I was offered to join this early stage startup, I didn’t have second thoughts. Considering that I have been interested in the Semantic Web ever since I got to know about it, and considering that there are not even a handful of startups working in this domain in Bangalore, it was a match made in heaven!
I joined as the first employee in the company and this is a stage where everything has to be done from the ground up – right from setting up servers, to deploying various engineering tools and writing the first line of code. While in Ugenie, I actually learnt the entire engineering process, in Semgel I got to execute on it from scratch.

The job involves the following:

  • System administration Setting up the office networks. Setting up the entire engineering infrastructure – versioning tools, bug management tools, development and test servers, document management, backups, user managment, configuration management, iteration process, deployment, production server setup, monitoring, cloud setup etc
  • Architecture Coming up with the architecture for the product, scaling a stateful system, coming up with engineering development guidelines etc
  • Engineering Evaluating various technologies, building expression evaluators over inferencing systems, generic task execution engines for abstracting and parallelizing task execution, code generators, load balancers etc
  • Testing Performance testing of the product

weRead/Lulu

Duration: January 2008 – August 2009

In order to have some startup experience, I joined Ugenie in January 2008. As part of the Ugenie experience I learnt end to end product design and development – understanding the needs of the customer, translating them to requirements, building the product/application, testing it, launching it and then analyzing the usage and finally translating that to more requirements. The 1.5 years that I spent in Ugenie has fundamentally changed my thinking and I am grateful to everyone in Ugenie for this wonderful experience. Ugenie was acquired by Lulu in August 2008.
Noteworthy contributions are:

  • Owned, architected, designed and developed Author’s corner in weRead – this is a platform for authors to interact with their readers. This single feature in weRead has attracted more than a million users till date. As part of this, I have done work in the following technologies: Drupal, Apache Solr, RRD tool. I have solved some interesting problems while building this platform, like author deduplication, author analytics tools, module based author profile pages, author indexing etc.
  • SEO for our site: weread.com – weRead was initially built for Facebook and was not SEO friendly and I was responsible for ensuring that the site content is made more discoverable, navigable and indexable by search engines.
  • Hi5 launch of weRead
  • Internationalization of weRead
  • Analytics – created a generic plug-in based log processor that is able to process HTTP access logs and extract metrics and then display them in an analytics dashboard for getting quick insights on feature metrics
  • Owned, architected, designed and developed the weRead application for the Yahoo Application Platform making it the first book application to be launched on Yahoo. This application has been well appreciated by Yahoo and is taken as an example of how applications need to be built on YAP.
  • Part of a 2 person development team, which worked on rewriting the poetry.com site (which is now Lulu Poetry) from scratch using the Python Django engine, Thrift, Apache Solr and the Magnolia CMS. The work involved designing, building and using Thrift services and migrating the legacy data to the new system on an extremely aggressive schedule. The Wikipedia article for poetry.com describes Lulu Poetry in more detail.

IBM

IBM WebSphere RFID Information Center

Duration: July 2005 – January 2007

WebSphere RFID Information Center (now called Traceability Server) is a repository for data generated by sensor networks. It provides mechanisms to store this data and then use it in a standards compliant way – so that products can be tracked across the supply chain. This has major implications in several usecases especially in the pharmacy industry.
  • I was involved in several key areas of version 1.0 of this product. Specifically I played a major role in the UI architecure of the entire product and in the development of the Security Policy Editor and the Data Browser. The Security Policy Editor is used to define policies about who can view what data and master data stored in the repository – the product has the capabilities to restrict data upto the cell level. The policy editor provides a user friendly way to allow users to define such policies. I am the co-inventor on a patent in this area: Providing Security for Queries to Electronic Product Code Information Services
  • Worked on this as a fresher
  • More information about this product in the IBM Website.

Projects in the WebSphere Technology Institute

Duration: January 2007 – January 2008

Project 1: Bayeux implementation for WebSphere Application Server – Community Edition (and Geronimo) – The browser primarily uses the HTTP protocol to interact with servers. However the biggest issue with HTTP is that it is request/response based. So what if the server needs to send data to the client, for example, data like stock quotes or in applications like Instant Messaging? In order to circumvent the problem, developers end up writing AJAX polling scripts that pings the server every few seconds for changed data. However this increases the load on the servers. In order to reduce the load, the Comet pattern is used and Bayeux is a standards based implementation of the Comet pattern.
Project 2: Zero Alive – a web-browser based hosted IDE for Project Zero – Project Zero aims at providing a RoR kind of an application framework based on Java. Zero Alive is a hosted, browser-based IDE for Project Zero.
  • WAS CE – I was involved in the development of a library that enables Bayeux(Comet) support in WAS-CE and Geronimo. This library is part of the Web 2.0 Feature Pack for WAS.
  • Project Zero – My involvement in this project was the design of REST interactions between the browser and the server.

Eclifox

Duration: July 2007 – January 2008

Eclifox is an alphaWorks technology. Eclifox aims to bring Eclipse functionalities to the browser with minimal developer effort. The core idea behind Eclifox is to embed a plug-in in Eclipse. The plug-in contains an embedded Jetty server. The server allows remote interaction with Eclipse.

MySearch

Imagine a user-edited search engine – allow users to identify data in the semi-structured pages and then use this to enhance the index of a search engine. A prototype for this was built using Lucene.

Engineering

I worked as in an intern in IBM for about 6 months during my final year of Engineering. As part of this, we underwent 2 projects in 2 tenures:

IBM Internship – Abstract UI Design using EMF and AUIML

Duration: 6 months
My final year engineering project (done in IBM) was “Abstract UI Design using EMF and AUIML.” The project was concerned with automatic generation of technology independent UI from data models developed using Rational Rose. Automatic code generating facility Eclipse Modeling Framework was used. In order to make the UI technology independent, a markup language Abstract User Interface Markup Language (AUIML) was used. My responsibilities in this project included defining and evaluating the technologies to be used and coming up with the overall architecture/design and building a few of these components. Prior to this, we underwent a 2 months training in IBM from July’04 to September’04. As part of this training, we worked on a mini project called – “An alternative approach for UI design using XML/XSL to Java/JSP based approach”.

Constraint Analysis of Strictly Conforming C Programs

This was my mini project in the third year. This project is concerned with the front-end of compiler design. In C programs
statements like:

i=i++;
i=j=i=10;

are considered wrong. The project concerns with finding out such statements and warning the user about it.
Some salient features of the project are:

  • The user is shown all syntactic and constraint errors in the program related to statements and expressions.
  • The user is able to visualize the program in the form of a tree. This helps in understanding how certain expressions work.
  • It also shows the type changes during expression evaluation.