TAME – Key Features – Schema and Entities

In the previous post we discussed the features that we would like to have in a modern day MVC framework. In this post let us discuss some of the key problems in designing such a framework and how we have approached it in TAME.

Data is stored in storage devices as bits. However humans don’t quite understand this, so have come up with mechanisms to store and retrieve data from a storage device using a high level interface. This high level interface is the notion of files and on top of files, we have built the notion of databases.

A database makes this storage and retrieval more user friendly rather than working with raw files. Databases are stores of “entities”. Entities may be related to other entities. Interaction with the database involves performing CRUD operations on the entities.

Entities contain fields. Fields have data types. Data types can be broadly categorized as “primitive data types” and “composite data types“. When considering relational databases, we normalize data into primitive data types. Composite data types are handled using primary and foreign key relationships across multiple tables. However, in a NoSQL store, we may store composite data as a sub-record within a single record itself and save an additional join.

So we start our discussion by asking, what are the minimum set of primitive and composite data types we need? If we do a comparative analysis of different programming languages and database technologies, we will soon realize that almost all languages have some way of representing strings, numbers and booleans. There are many other primitive types, but these are the minimum. The reasoning behind why this is so, is beyond the scope of this post.

Composites are ways of grouping data together. Composites are made up of primitives and other composites. At a minimum, we need one composite data type that has sequential properties (list like) and at least one that can be used to store non-sequential (key/value) form of data (map like).

Continue reading “TAME – Key Features – Schema and Entities”

The Jnaapti Journey – Virtual Coach

What it is

While the idea of Virtual Coach has always been in Gautham’s mind since the inception of jnaapti, a startup does not have the luxury to build the entire vision and then launch. Rather, we have to start building the minimum set of features which we can validate with our users and then iterate frequently and let usage and metrics drive the product’s evolution. Jnaapti has been doing this ever since the launch of the first version of the product.

The vision of “Virtual Coach” is to eventually replace a human coach with a “Virtual” coach but in such a way that the learner does not even realize that he/she is being coached by a virtual entity. It follows the Turing test for Artificial Intelligence, but applies to learning and coaching. While we have started with software technology training, we intend to build a generic platform that has the ability to teach anything (any skill) to anyone (no bias) starting from anywhere (irrespective of what they know today).

The problem that keeps us awake at night is, “How do we scale good quality coaching so that it reaches the maximum number of people?”

Technical details

Version 0

The MVP of Jnaapti’s Virtual Coach was not a “product” at all. 🙂

The initial idea of the training process was tested out using Email as a form of communication between the learners and the coach. As Gautham coached people, he carefully noted down the pains of using Email as the medium of communication. Learners, especially students, didn’t follow email etiquette. So while Gautham was busy downloading the attachment from the solution email, and composing his review, students would send new emails asking him to discard the old solution and consider this new one. The requirements for the first version of the product was to replace Email as the mode of communication and have the interaction around an activity grouped under a single context.

Version 1 – 2011

The first version of the product was built single handedly by Gautham using Web2Py. It was a server-heavy product. There was minimal Javascript used and a lot of the backend data entry was done using ready-made views that Web2Py provides out of the box. The entire conceptualization, design, development and deployment of the product took 2.5 months.

The first version of the product was called the “Jnaapti Virtual Learning Environment”, later renamed to “Virtual Coach”.

Continue reading “The Jnaapti Journey – Virtual Coach”