Category Archives

11 Articles

Learning : How do we learn new words ?

Hello Everyone , Its been a while I made a blog post as I have been busy , but while I am preparing for GRE , I have noticed a lot of patterns as well as problems in learning new words .

I want to enumerate some of my observations below

1. Conceptual Models : Conceptual model is again borrowed from the design world , for more information you can read my previous blog post regarding (,d.c2I )

But We have conceptual models for every words that know in our brain , consider a simple word like apple , Try saying it one time , do you see a visual image ( conceptual model ) in your brain ? This basically provides evidence to my first observation . However , there are a lots of words for which we have hard time retrieving a good mental image , or perhaps we cant associate them with images .

2. We Strive for patterns in world , and words are no different , We naturally try to relate new words with ones we are already quite familiar with , a simple and obvious example is that , when my brain already knows the word audacity quite well and I havnt used or heard the word audacious , I know by my natural instincts that it is related to audacity.

3. STM ( Short Term Memory ) is quite limited and not be stressed too much , We have a capacity of introducing new words to our brain everyday which varies from a person to person , but we shouldnt put too much load on STM.
storing words on LTM ( Long Term Memory ) requires quite effort , but once done is quite effective , This can be achieved if you learn a word thoroughly , see various examples associated with it , learn it to use in different contexts.

4. It can be very useful to associate few chars of word to something we can extract meaning of the word from ,
for example I came across this word bucolic, which I havnt heard but when I read its meaning which is relating to country , village , rural area. I somehow associated bu prefix of word with the word buffalo , and It basically created an association of the following kind

bucolic -> buffalo -> rural area, village

So we see that these forced mappings can actually be very useful .

There is one more design concept hidden in this observation , Knowledge from the word and knowledge from the head .
Knowledge in head requires a lot of effort in extraction , whereas knowledge from external world is relatively easy to identify , but both have advantages and limitations , the ideal case is carefully making use of them both , in the above example we identify bu prefix from external world and then retrieve buffalo from brain and then further retrieve true meaning of the word .

5. We learn by actually doing things ( Constructionism ) : This might seem very simple , but is very powerful , if you write words manually youself by your hand , you are in a way using this principle, It can be used in a more powerful way by creating a virtual simulating environment , lets say you are learning a new word , if we can design a system that can give us a task/activity to do and in that activity we mimic the true meaning of the newly seen word , and then we use it in a sentence . Its hard to actually find a suitable example here , I might update this post soon

6. We learn more quickly and can have a better conceptual models if we can associate images that capture the meaning of the word partially or completely .
Maybe if we are learning the word swiftly , and we are provided with a speedy car moving on a street , we can get a better meaning.

7. Frequent rehearsal of newly learnt words is very essential to save the words permanently in LTM.

Naive String Matching algo implementation in c++

using namespace std;

#include <iostream>
#include <conio.h>
#include <stdio.h>

string T = "this is awesome";
string M = "is";

int match() {
int flag=0;

for(int i=0; i <T.length() -M.length(); i++) {
if (T[i] == M[0]) {
flag =1;
for (int j=1; j<M.length(); j++) {

if(T[(i+j)] == M[j]) {

// flag=0;

else {
cout << "failure";
return -1;

cout << "success , value of shift is : " << i ;

if (flag == 0) {

cout << "failure";


int main() {

return 0;

< }

Perfect-Todo just got featured on Ionic Showcase :)

Perfect-Todo just got featured on Ionic Showcase :)

Just got an email few minutes ago that my app perfect-todo got accepted (wow what a perfect birthday gift )

If you dont know about it, Its a simple experiment with ionic2 , What I have learned over a month or two browsing ionic2 docs and forums . It requires min android version 5.1 though

Some of the things I have learned so far :

1. Being a part of the “community” is important . This is something you will realize soon . Take a look at Leading Bloggers who blog about ionic like Josh Morony ,They are actively involved in community (like forums , slack channel etc).

2. Testing is important from the very beginning , Testing should be done on real device because sometimes stuff produces unexpected results.

3. Ionic Forums are really helpful , they have an ocean of knowledge(Also the slack channel)

4. If you learn something , Share your knowledge , Not only you would feel confident , you are indirectly contributing to the community.

5. Never Underestimate simple things , because even simple things can go wrong.

How I Used HCD on the simplest app ?

Okay let me tell you a secret that you probably already know, Its called the Human Centered Design . It says understand the needs of people first and then develop technologies. It started with a long observation that even a simple thing like a notepad could be very “powerful” and “useful” to me. and I didnt have it all the time. So I decided to start with a todo app. Soon When I created the FWP(First Working Prototype) I noticed my early user in their “natural” environment , Noticing their difficulties which led to rapid changing. Yes The app still lacks a lot of features but I now understand that when you create a software you dont just create it in one go , Its a continual process just like designing.


I have made a decision , I am going to open source it so other beginners can have a look , take inspiration and provide me inspiration. The Open Source ecosystem is awesome , it just takes a little while to adjust 🙂

Here you go

My future plans :

Invest in UI
Integrate Push Notifications
Make it more user friendly
Integrate Reminders

Using JSONP Service in angular2

Using JSONP Service in angular2

Hi Guys , It seems this is my first angular2 post, even though I am using it in my ionic2 but I dont think it should matter since everything is the same .

So here is the plan : I want to use github api ( you can also use jsonplaceholder api ) and fetch json object of all jobs using http.

But There is a problem , Since browsers have same origin policy , meaning that http request from a server to a different server are not possible , so we cannot use HTTP , Instead we can use JSONP, I never used JSONP API Before , but its actually pretty simple

So Let’s Get started!

Create a blank new angular2 project

Create a new provider called data ( This will serve as our data service )

So few comments regarding the code below , First we will import required “stuff” In this case JSONP,Response,Headers etc. Also notice we are importing Observables because thats how we are going to handle our async responses.
You can find the basic boilerplate code at angular2 website.

Now notice that I have created a new member variable url of the class and in its original url value I have appended callback=JSON_CALLBACK , well this is because we are dealing with JSONP and when we get our response back our JSONP_CALLBACK will be fired.

We are also making use of rxjs map and catch operator. map will basically map our chunk of data to json . So thats it for the service , nothing very groundbreaking here

import { Http,Jsonp, Response } from '@angular/http';
import { Headers, RequestOptions } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';

import 'rxjs/add/observable/throw';

import {Injectable} from '@angular/core';

export class DataService {

private url :any ="";

constructor(private jsonp:Jsonp){


getdata() : Observable {

return this.jsonp.get(this.url)


private extractData(res: Response) {
let body = res.json();

console.log('extracting data');

return body ;


private handleError (error: any) {
// In a real world app, we might use a remote logging infrastructure
// We'd also dig deeper into the error to get a better message
let errMsg = (error.message) ? error.message :
error.status ? `${error.status} - ${error.statusText}` : 'Server error';
console.error('err' + errMsg); // log to console instead
return Observable.throw(errMsg);


Okay So now lets “consume” our data service , So Either can use your current component, or create a new one and import the Service.

So my homepage.ts file looks something like this :

import {DataService} from '../../providers/data/data';

templateUrl: 'build/pages/home/home.html',

export class HomePage {

public data:any;
private errorMessage:any;

constructor(private dataService:DataService) {

data => = data,
error => this.errorMessage = error);



So since we now have the data we can actually use this by interpolation and using the json pipe for clarity .


{{data | json }}

That should be it , You should see the resulting json 🙂

Create Custom Icon/Splash Screen in ionic2

Create Custom Icon/Splash Screen in ionic2

Its actually pretty simple to generate custom resources in your Ionic2 App. Just refer to Ionic1 Docs page for the same topic , it seems ionic2 docs dont mention anything about this right now but everything is still the same .


Somethings that you should know :

  1. Ionic resources actually uses your internet connection to upload files to their “resizing servers “
  2. Always test on a real device
  3. Always remove yours app’s previous data or you can simple uninstall the previous version
  4. If there is any error in splash screen plugin r

The Design Of Everyday Things Review


So I have been reading this book The Design of Everyday things by Don Norman , Here are some of my thoughts:

This book is an ocean of ideas and concepts, the author argues that while technology keeps changing people stay the same and therefore design principles remain the same . I really like this because what this means is that what you learn in this book will almost be true for future technologies like A.I and Virtual Reality .

This book has a lot of concepts and supporting examples and engineers really need to buy this book , because they will understand the importance of design and have a strong respect for it . This book is also perfect for people who love creativity and art (like me 🙂 )

Some of the chapters like chapter 2 are really big and involve a lot of concepts , so I followed this approach : I divided this book into modules(chapters) and instead of thinking about the whole book , I focused on one specific module and gave it a day or two , this way I noted down the things I liked about a single module and then once I was done I moved to the next one .

The great reviews about this book are really justified , so overall I am quite happy that I learned a lot of design principles , In future I would love to apply them on various objects and services I design.


Design of Educational Technologies

Design of Educational Technologies


I love designing and I have a passion for teaching(I am not a teacher but I have great interest in improving the quality of education system ) , In this article I want to discuss how we can use some of the design principles in field of Ed-Tech , I will keep updating this article when I do more research / find more ideas

Simplicity : I introduced one of my teachers to the whole idea of E-learning and How to record video lectures, there was a lot to learn , so she took a long time to understand but she finally did , the idea is very simple we need to design systems that are very simple , Not all teachers are experts in technologies and not just teachers we want to design systems which students find easy and intuitive and not confusing , no one needs a dashboard with tons of functionality but no clear way of navigation etc

Evaluating Simplicity : We can perform a simple test for this . Say if we are introducing a new e-learning software to kids, we can initially allow them to explore what it does without giving them any details . If we find after some time kids easily figured out what it does and how to use it , It has passed the simplicity test easily . It holds equally good for books , lets say kids are assigned to read a new book , If the book is very simple and interactive and engaging , the kids wont ask what the book is about , they will be totally engaged in the book , slowly reaching the “flow” state. This book also passes the simplicity test.

Natural Mapping : Simplicity and Natural Mapping are generally related to each other , Natural Mapping refers to mapping between objects and our natural sense . This will be clear with help of this example , Lets say you are using an online testing tool and solving a question paper, if the shape and appearance of that paper maps with that of hand written question paper that we are used to naturally then this is an example of natural mapping . Maybe we can have ruled pages or same font or add a shadow or small amount of folded paper at bottom indication , Its a booklet and we can move to next page by natural gesture like swiping / sliding the page.

Evaluating Natural Mapping : This is very easy, first we take the natural object that we are trying to map , for instance in the above example , we compare the test booklet view of e-learning system with a real physical test booklet and find out if there are things that can potentially be added to the view but have not been added in order for the mapping to be more natural. If we feel that real physical object has totally different characteristics from the virtual one and there are a lot of potential improvements that can be done which author/developer has not explored yet , we provide him a feedback.

HCD: Human Centered Design , is a well known design philosophy which basically says that before starting the actual design process study the people , their requirements and then build systems on top of that, I think this is exactly what we need in education , for instance when we create books for students , we dont know their difficulties, what concepts trouble them, we dont ask them how would they like a particular thing, We just assume that our book will be perfect fit for students of say 8-10 year old age group. This is a bad design idea, If we instead ask from our target audience(teachers or students) , their difficulties , their challenges, their expectations etc our systems/books etc will be much more powerful,delightful and create a deep impact.

Some of you might suggest surveys , Let me ask you do you fill every survey form you see ? I am sure most of you will say no, this is because of many reasons like

  1. People have a general conception that most surveys are just for sake of taking surveys and their participation wont make a difference ( I think this is wrong .
  2. Some books include a letter head at the end indication the address at which user can send the survey letter for valuable feedback , some even include email account or website , but we know users dont like to do each of these .

How can we apply HCD effectively ? Imagine that you are writing a book for algebra students , You know your target audience (students and teachers ) , you can pick any random school and randomly ask students/teachers about their problems with the topic without revealing your identity , you should also secretly observe their behavior and problems , suppose they are assigned an activity that requires problem solving and involves algebra concepts , note their behavior , activities,experiences .

Here is a quote I kinda like

…pay attention to what users do, not what they say

-Jakob Nielsen

So How Can we done effectively do HCD in classrooms and for educational technologies ?

For this I suggest , Do It Yourself (DIY ) rule , The teacher or instructor should not just stand there staring at what other kids are doing and carrying high expectations , instead he should get involved in that same activity and do so from perspective of kids by making them comfortable and not scaring them , by doing this the instructor can open up on things they feel are difficult in a friendly way and know what other’s feel about it .

There is another way how we can get genuine feedbacks from kids . Sometimes kids are scared by teacher’s presence in an activity while they are comfortable working with other kids of similar age group, they might not ask questions or report problems out of fear of being ashamed in front of others . We can tackle this in two ways :-

  1. By selecting kids who have already excelled in the current topic / class and are of similar age group. Asking them to mix in with current kids and find out the difficulties they are facing . Maybe he is from some other school , just staying there for a week .  The selected kid shall be rewarded for his/work .
  2. We can ask them to go home and share their thoughts with a virtual character , who will ask them about their work and then store the recorded voice information, This should be done in guidance with parents and if parents feel necessary they can send this data to the teacher .


So How can we apply other core design principles in Ed-Tech ? Lets see

Conceptual Model : This is a general term in design that refers to highly simplified version of how something works, We humans build conceptual models of everything around us , everything we see , observe .

When Students are introduced to a new concept they try to build conceptual models of that concept , each individual has a different way of constructing conceptual models , they dont have to be the same but what we should aim for is that they should be correct , The instructor or designer of the book has their own conceptual model different from their readers, The designer of the book must not forget this, what they think might be simple might not be simply for students.

So How do we construct conceptual models ? We do so by observation, based on our prior experiences with similar things, reviews etc , We call all of these things combined the System Image

Its very important to provide students with more options to learn things , just the text from the book is not sufficient to create correct conceptual models for all students , We must show students simulations , share with them applications of what they are learning and share our own experiences.

One thing to note is that conceptual models are not static , they evolve as we develop them further with more learning , clues etc. For instance you would have developed a conceptual model about geometry when you were first introduced to it but after you learn calculus , your earlier model got evolved , because now you can view geometry with a new perspective etc .

Constraints : This is another design concept designers incorporate constraints while designing things to avoid errors , misconceptions etc . We can do the same while developing educational systems , We can design an exercise software with interactive components (much like K.A ) and in order to go to a new skill you must have completed all the problems of the skills that are dependent on the skill so we are deliberately introducing a new constraint , We can make sure there are no gaps and they can learn new concepts without trouble

A note regarding questions : Questions should be designed as 2 set of problem sets , one which is fundamental and mandatory in which each problem involves a concept that we have learnt , and it includes a problem that takes all the concepts learnt into account . So fundamental problem set will ensure that a student has mastered a concept and ready for the next one , and then there should be another problem set containing additional problems in case they would like to do even more practice .

Evaluating Constraints : Are these constraints necessary and relevant ? We can perform an activity by relaxing those constraints and looking at the results . Consider these examples , In some situations students might not understand a concept at low tree level but understand the concept at a high tree level, this might help him in understanding the concept at the low level , as it might reshape his conceptual model relating to lower level concept and he might get the right intuition . We must not neglect this possibility .

Sometimes students have the correct understanding but they face a lot of unexpected pressure while giving a test, we can try by relaxing time constraints , and strictness and observe how well a student performs , maybe a student performs brilliantly under these conditions , he/she might even complete the test in its original time , because now he only has to focus on the problems and not other constraints.

If the results are positive , we can slowly start adding friendly constraints and at last ask them to give a final regular test, if the results are again positive, we must relax constraints overall.

Constructionist and Activity Based Learning :  These both belong to educational domain , but they are very important and a “good and enjoyable” product/technology must incorporate these .

Conceptual Models : Making sure we transfer the right conceptual model is extremely important . For that I propose what I call Conceptual Model Analysis Technique.

It all starts from a teacher, teacher introduces a new topic by making sure students develop “her” conceptual model which is correct as she is a teacher (obviously) , but it might still vary from say a student who passed a test and a mathematician . Even though each of them are correct at basic level , we must look into details and find improvements . This will be clear in a moment.

Let’s say you are designing a new book for pre school kids which teaches them basics of math, the teacher teaches them some concepts , then she gives them a “constructive” assignment / activity on the same topic promoting creativity and without time constraints.

They are allowed to use anything to demonstrate their learning about a concept . This is usually after some time teachers teaches them ( not directly after teaching) . They use their creativity and imagination and come up with different things , they have to record an audio explaining their work and take a picture of their work / submit their work to the teacher . After this activity teachers individually pays attention to every kid’s work and finds faulty conceptual models , She also finds the “average conceptual model” and perhaps a different and unique conceptual model that explains things in an even simpler way which she never saw coming . This provides a lot of information to the teacher and she can show kid’s work to his/her parent.

After this kids have to take a test having real world problems and they have to get all of them right , even if one of them is wrong they should be asked to explain it with help of their earlier conceptual model /based on their submited work.