Thursday, May 22, 2014

GNU (GNU's Not Unix!)

GNU is a unix like operating system developed by the GNU Project. This project was initiated by Richard Stallman at MIT on 27th September 1983. It is a free software mass collaboration project aimed at giving the computer users freedom and control by developing and providing 100% free software. Some of the GNU packages that form an integral part of a basic system include GNU Compiler Collection (GCC), the GNU C Library (glibc), GNU Core and binary utilities (coreutils/binutils) and bash shell. The number of contributors for this project have increased over the years and strongly supported by Free Software Foundation.

If you have a fair knowledge about computer operating systems, you would have heard the word “Linux” or “Ubuntu”. All these are name of Operating systems under GNU project.  Operating system refers to a collection of software that stands as a medium between the application and the underlying computer hardware.  Microsoft 98, Microsoft XP, Windows Vista, 7, 8, Mac OS are all examples of Operating systems. The core part of an operating system is the kernel. Kernel is a computer program that manages input/output requests from software and translates them into data processing instructions.

Ubuntu is a debian based linux operating system with a GNOME interface. GNOME project comes under GNU and is related to the programs for desktop environments. Debian is an operating system that can either use linux kernel, the FreeBSD kernel, GNU Hurd Kernel or GNU Mach microkernel. Ubuntu is aone of the most popular debian system.

There are different ways to contribute to this GNU project. If you want to release your own software under GNU Project you can use GNU Public license V2 or V3 in order to support the cause of this project. The goal was to bring a wholly free software operating system into existence. Stallman wanted computer users to be "free", as most were in the 1960s and 1970s – free to study the source code of the software they use, free to share the software with other people, free to modify the behavior of the software, and free to publish their modified versions of the software.

The logo for GNU is a gnu head (antelope). It appears in GNU software and in printed and electronic documentation for the GNU Project, and is also used in Free Software Foundation materials.

Please feel free to comment.

Stay tuned for more.

Friday, May 09, 2014

How to develop new app ideas

At present, the pace of technology has enabled us to create any type of application even beyond our imagination. Perception computing is one such topic. Most of you would have seen games  where you use gestures (say wave your hand and the system interacts with you) . Developing such game have always been a dream for every developer out there. But  right now it is possible for you to develop such games (or applications) on your own. All that stands between development and your application is your app idea. A brilliant app idea can make you very popular and if lucky will turn out as your career. So in this post i have put forth some of my ideas to think or develop your own app idea.

1. Look around. Look for things that may make your life better. For example: A driver-less car (BTW Google has been working on it..It was just an example).
2. Look for things that can make other live better For example: An application to report garbage dumps to help the corporation in clearing it faster.
3. Something that already exists but needs improvement. For example: A shopping app where the users can view the products as holograms (so that they can know the proper size of that product)
4. A feature that can be applied for a different problem at hand (for example: recently there was an alarm app which made use of gyro sensor that doesn't  snooze until you shake it hard)
5. Something related to your school or college (for example: the announcements in your college as an android app..I'm damn sure you will be quite popular if you come up with something like that )
6. Something for the children or elderly (The applications have been scaled across different age groups and the usability also differs. So an application that can help them would be really considered as a good application )
7. Games (This is quite competitive and dangerous because everyone wants to create a game!!. However if you can create games that you invented, it may turn out to be popular (for example: flow free game is a simple but popular game in android market ))
8. On demand applications  for example: 9 out of 10 people i meet today wants to be on diet..so such demand based apps can be your next app idea.
9.  Simpler. yet more simpler. Some applications you have seen may exist either in one platform or does not have a mobile version (For example: some companies wants to build their android apps but will not have developers at its disposal. You talk to them and may be you can end up doing an intern with them)
10. Passion. Its your passion. Some people are gifted with talents. One of my friend is a crazy foodie. He knows A-Z every food outlet near my place. COOL!!. Why not share it with the world??.

I have run out of ideas and hope that your app idea falls in either of these category. If you want to add any other ideas about ideas :P just drop a comment.

Stay tuned for more...

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.