Tuesday, April 22, 2014


Almost everybody have a Gmail account. But only 10% of them use Gmail to its maximum potential. Besides sending and receiving emails there are several cool features that can facilitate your experience with Gmail especially to those who get a lot of emails every day. One of the features I came across was email filter. Using this feature you can have full control over your mails. For example you can categorize emails into different categories such as personal or workplace so that it is very easy for you to prioritize what you want. I will be explaining in steps and if you have any questions please let me know.
1. Go to Gmail and log in using your username and password.
2. After login you have to go to settings. Settings are available in by clicking the gear like icon on to right of the page.

3. After going to the settings check for the Filters tab and make sure you click it.
4. Under filters you can see two options “create new filter” and “import filters”.

5. Click create new filter (I will do a separate tutorial on import filter. So don’t worry about it right now)
6. Once you click create new filter you will see a popup.  This popup is your filter settings. Please configure it as per your requirement. For example if I want to filter mails coming from abhijit.blogger@gmail.com, I will add this email under “From:” You can also even add multiple email ids or even specify a criteria to filter email with attachments less than 5 MB.

7. After configuration. Click “Create filter with this search” on the right bottom corner of the popup window.
8. A new window appears. In this window you can configure what you want to do with this filter (the action part). For example: Select Apply label and create a new label “LTSLAB”.

9. If you want to apply the filter for already existing mails tick the checkbox near “Also apply filter for matching conversations”
10. Press create filter
11. Voila! Your filter is set up. In the left panel you can see the “LTSLAB” label and you can click it to view all the emails that have been filtered as per your configuration.

12. Create multiple filters and have fun. I actually came across this when I subscribed to two or three open source communities where I will receive a mail with every conversation. So after applying the filter I was able to handle multiple emails.

Stay tuned for more.

Wednesday, March 26, 2014

Jet brains MPS

Hello there readers. It’s been a long time since I could pull up some time to write a proper post. Well anyway I’m back with a bang, more determined than before. I’m planning to renovate my website sometime soon and if you have any specific design please let me know. Well coming to the topic of the day, Jet brains MPS for creating DSL (Domain specific language). Some of you may already know about DSL while some of them would be using it without knowing. Since it is an introductory tutorial I’m very much comfortable even if you have never heard about DSL at all.

DSL is also called as domain specific languages. As the name suggests it is domain specific i.e. it is used for specific purpose rather than for general usage. You may have heard or came across programming languages such as C++ Java. Such languages have been used for general purpose to develop various programs and applications and are collectively known as General purpose languages (GPL).  DSL may bolster existing GPL or may be used to create a programming language on your own. Jet brains MPS is a language workbench (Language factory) to achieve the same. Among the different development tools Jet brains MPS is famous due to two reasons. First, it is open source software i.e. you can download the code, play on your own or maybe contribute to the community by creating a cool add-on feature. It also has a forum where people are so friendly that they can help you with anything. Second, it uses projectional editing i.e. developing a programming language may involve various phases and you can have control over various intermediate components/outputs of various phases. This necessarily means that you will have full control of what you are developing and you can very easily debug due to the in depth analytic capability of the projectional feature of MPS.

Every complicated concept starts with a simple example. We will start by creating a DSL for generating a calculator. This example is like Hello World of Jet brains MPS.
So essentially when you enter:
 calculator MySalary
 input PHP Hours
 input Java Hours
 output Java Hours*10 + PHP Hours*5
You get::

See now using this DSL you can create as many as calculator as you wish according to your need without the need to use complex programs to achieve the same. One important thing about DSLs is that you can always add a new command if needed and the language becomes robust and sustain in the longer run. If you want to get started refer this link https://www.jetbrains.com/mps/docs/tutorial.html.
If you want to me to do the tutorials I will be more than happy to do so. If you have any queries or suggestions or feedback please let me know.

Stay tuned for more.

Thursday, November 28, 2013

Matlab NNtool : Simple Perceptron model

Its been quite a while since my last post. The past few months have been busy as I spent most of the time working on my research work. I'm back with my zeal to share with you what I have been learning.
Note:  Don't worry if you are not accustomed to the word perceptron. The only pre-requisite for this tutorial is your basic understanding of AND gate. If you are still not confident Google "AND gate".
  In the beginning I was looking at neural networks as a theoretical  perspective but to completely understand its true nature we have to implement it. Though it is not possible to implement immediately, we can use tools like NNtool (Neural networks tool) to simulate and analyze the networks. Besides reducing the time consumed, it is easier to do a comparative study on different type of networks. This tutorial is focused on implementing AND gate logic with a simple perceptron model. If you are not sure about how neuron works just imagine a bucket of water. If you keep on adding water (will increase weight) to the bucket at a certain point of time it overflows.
   Please follow the steps carefully. If you are stuck at any step, please mention your query in the comments below.
1. Download Matlab (Dont ask me which version :P i.e..e Any version of Matlab that supports NNtool box can work perfectly. Preferably use the latest version Matlab 2013a/2013b)
2.After installation just start Matlab. (Double click the matlab icon in your desktop after installation :-0)
 3. The truth table for AND gate is as follows:
Where A and B are inputs and A.B is the expected outputs. Now we have to train the neural network in such a way that when ewe give the value of A and B, it should be able to reproduce the output of A.B
4. First we have to define input data as vector matrix. When you type nntool and press enter a popup window will appear. From that popup window press the New button which in turn will produce another popup windows. Under this click the Data tab. Enter name as input_AB, datatype as Input and value as [ 0 0 1 1; 0 1 0 1]. Now if you observe closely the input vector is represented column-wise separated by a semicolon i.e. [A ; B ]. Finally press the create button.
 5. Now it is time to define the target vector. The target vector is represented with name as target_AND, type as Targets and value as [0 0 0 1] (similar to [ A.B ] ). Now press create.
 6. Once Input and target vectors have been defined, the network has to be created. Press the network tab set the name as AND_net, type as Perceptron and respective Input and target data. Don't worry about other parameter (I will explain you that in later tutorials)
 7. Now go back to the earlier popup and double click AND_net. A windows will be created. Under that press the train tab and set the input and target data. Press the train network button.
 8. Once it is trained the performance and the training states occurred during the training process can be analysed.
 9. Now it is time to simulate. Now to provide the input follow step 3 with value as [ 1 ; 1] representing a input 1, 1.
 10. In the Network AND_net popup navigate to the simulate tab. set the input and press Simulate network. Almost done :-)
 11. Now go the nntool popup and double click ANS_net_outputs. BAZZINGA.. we have got the expected output 1. i.e. when we gave the value A and B the perceptron model was able to predict the value of A.B

12. Wonderful isn't it. This is just the simplest of all. Now just try and explore the toolbox and widen your knowledge. (You can understand how your brain works :P)

If you have any queries or suggestions please feel free to contact me ."I always say the minute I stop making mistakes is the minute I stop learning and I've definitely learned a lot".

Sunday, September 15, 2013

NFCs for the future of app development

NFC or Near Field Communication is a short-range high frequency wireless technology that enables the exchange of data between devices over about a 10 cm distance. Due to its shorter range, NFC provides a higher degree of security than Bluetooth and makes NFC suitable for crowded areas where correlating a signal with its transmitting physical device (and by extension, its user) might otherwise prove impossible. NFC can also work when one of the devices is not powered by a battery (e.g. on a phone that may be turned off, a contactless smart credit card, etc.). The technology is built up on the existing RFID standards. However, there are minor differences, and NFC devices cannot interact with some of the legacy systems. Near filed Communication devices are operating at at 13.56 MHz and can transfer data at up to 424 Kbits/second. Communication between two NFC enabled handsets is started and completed with a simple proximity wave or touch of the two devices to each other.

Key Benefits of NFC

  • Intuitive: NFC interactions require no more than a simple touch
  • Versatile: NFC is ideally suited to the broadest range of industries, environments, and uses
  • Open and standards-based: The underlying layers of NFC technology follow universally implemented ISO, ECMA, and ETSI standards
  • Technology-enabling: NFC facilitates fast and simple setup of wireless technologies, such as Bluetooth, Wifi, etc.)
  • Inherently secure: NFC transmissions are short range (from a touch to a few centimeters)
  • Interoperable: NFC works with existing contactless card technologies
  • Security-ready: NFC has built-in capabilities to support secure applications

NFC applications 

  • Touch and Go
    Applications such as access control or transport/event ticketing, where the user only needs to bring the device storing the ticket or access code close to the reader. Also, for simple data capture applications, such as picking up an Internet URL from a smart label on a poster.
  • Touch and Confirm
    Applications such as mobile payment where the user has to confirm the interaction by entering a password or just accepting the transaction.
  • Touch and Connect
    Linking two NFC-enabled devices to enable peer to peer transfer of data such as downloading music, exchanging images or synchronizing address books.
  • Touch and Explore
    NFC devices may offer more than one possible function. The consumer will be able to explore a device’s capabilities to find out which services are offered.

How does this work?

In NFC enabled smartphones NFC microchip (aka NFC tag) is embedded inside. This microchip can hold some memory and can communicate with any NFC tag near it. Most NFC tags are passive elements those store data for reader (for NFC enabled mobile phones) in NDEF (NFC Data Exchange Format) format. When we touch our phones with any NFC forum enabled tags, actually we read the NDEF message by our application. Those happen via NFC application to protocol stack then low level driver and finally the radio frequency (RF) parts to retrieve data from tags.

To find out the applications that have already been implemented using nfc click here

To know more about nfc click here

Stay tuned for more

Monday, July 08, 2013

Titanium appcelerator : Cross platform application development

 I have always imagined a IDE(Integrated Placement Environment) where i can code in a language i like and deploy my application on multiple platforms. I always hated that mental stress that i had to undergo learning a language for developing in its corresponding platforms. Everything was unique in its own way. The world is changing and people have started to understand it is the idea that is more important than the syntax. This has opened up a new dimension in the thinking abilities of the human mind and the cross platform application development has resurfaced bright and determined. There are Startups popping here and there with determined youngsters ready to create a change. Be a part of that race.
    Titanium Studio simplifies the mobile development process, allowing community developers to rapidly build, test, package and publish mobile applications across multiple devices and operating systems. The resulting native applications perform and behave just like they were written in Objective-C (iPhone and iPad) or Java (Android phone and tablets) to deliver rich, immersive user experiences.How cool is that !!!!.
Key features:
  1. Management of all projects in a single view
  2. Development framework facilitates component reuse for app factory approach
  3. Advanced Code Assist (Titanium SDK)
  4. Emulator and on-device debugging ensures high quality apps
  5. Integrated with Titanium Cloud Services for building cloud-connected apps
  6. One-click mobile app deployment
  7. Besides the above listed platforms several platform including Blackberry is under platform.
Embrace the web. Web is the future.If you want to know more there is a blog that you can follow, documentation, tutorials, case studies, app showcase, resources and ....

Titanium studio can be downloaded here.
Stay tuned for more and feel free to comment.

Friday, June 28, 2013

Multi lingual Chat (@Santosh)

Santosh says:
I came across a random idea which you can use to develop an App. Android Chat App for users from multiple languages. How would it be if users of different mother tongue can chat in an App but understand each other ? The app essentially uses an API like Google Translator to semantically translate content to the language of your choice. The user can set a default language in which he wants to chat. We have already removed location barriers with existing communication systems. With this kind of app, no more language barriers ! If this can be implemented in text, next step may be to implement it for voice calls as well.


It is a brilliant idea and i had thought something similar to this 2 years back. But the problem is highly challenging. First of all don't narrow down a platform before you have mapped out the idea. Doing  so will hinder your thinking by restricting it to certain constraints.  If you have completely understood Google translator API you would know that it is not complete. Do not rely on any API that is not complete.Working with understanding the semantics is a research topic and making computer think like a human will take some time .
    If you want to work on this idea i would suggest looking up existing research work in this field. I came across a Hindi- English Translation  Research and I will try get you the related links. You can work on your own translator API or take a particular language and work on it. If you need any assistance please let me know.

All the BEST!!!!!

Tuesday, June 25, 2013

Setting up tools for Blackberry Application development

Recently i started developing applications for Blackberry.It provides a huge range of cross platform support i.e if you know HTML 5/ C++/Java you can develop your blackberry app easily. Today one of the commonly used for application development is HTML 5. So I will teach you to make your first Blackberry app using HTML 5.Before we start just check whether you have installed the set of tools needed for the development.Download all the files here and follow the steps.

  1. Install Google chrome. If you have google chrome skip this strep.
  2. Download Ripple Emulator ("ripple.crx"). Go to Options->tools-> extensions and drag and drop your ripple.crx file into the window.
  3. Once Installed you can find a ripple icon on the top right end. Just click and wait for a small popup.
  4. Create a folder named RippleSites in one of the following locations, so that Ripple can find your app's files.
    • Windows XPC:\Documents and Settings\Username\RippleSites
    • Windows 7C:\Users\Username\RippleSites
    • Mac OS/Users/Username/RippleSites
    • Note: This is a very important step
  5. Once that is done you can follow this.
The importance of this tutorial is to help you in  setting up since i have received a few queries regarding the same.
If any step is not clear please feel free to ask me.
Stay tuned  for more.