Saturday, 6 December 2014

Why Learn Cloud Computing and Big Data ?


Today “Cloud computing” and "Big data" have become one of those buzzwords you hear everywhere whether you are a IT professional, a Faculty or a Student. So let's clear up what these buzzwords really mean and why to learn technologies associated with them in convergence.

The easiest definitions which I find quite simple and quick to grasp for any layman to expert are from Wikipedia. Let me take defination of Big Data from Wiki.
Convergence of Big Data and Cloud

Wikipedia defines big data as, “Big data” is an term for any collection or grouping of data sets which are so large and complex that at some point of time it becomes difficult to process them using traditional data processing applications like RDBMS or single node sequential processing. The main hindrances in processing of Big data are its analysis, extraction, processing, searching, sharing, storage, transfer, visualization.

As far as what cloud computing is, I prefer the definition from IBM and it goes as:  “Cloud computing, often referred to as simply “the cloud,” is the delivery of on-demand computing resources—everything from applications to data centers—over the Internet on a pay-for-use basis. ”

Cloud computing is changing the IT industry, specifically the Infrastructure management service paradigm of IT industry. What cloud offers is flexibility , pay as you go model of pricing and elastic scalability with no upfront costs.

Thats why startups look at cloud computing similar to a farmer looking at monsoon clouds for rain in India.

But whats relation between Big Data and Cloud Computing ?

Recent developments lead to a notion “AaaS” , yes I am not wrong its “AaaS” (analytics as a service). Big data Analytics requires heavy investments in setting up required infrastructure for large Hadoop based Clusters and here comes cloud computing as a enabler technology for advanced analytics with big data.

There is very compelling reason to call cloud computing as enabler technology of big data analytics , because investments in big data analysis can be significant and make a clear case for a need for efficient, cost-effective infrastructure and thats what cloud computing provides by its service delivery model IaaS. Intel's IT center in its document titled “Big Data in the Cloud: Converging Technologies ” explains the convergence between Cloud Computing and Big Data elegantly.

If you take a look at the evolution of the cloud computing market, companies around the world are looking for more and more cloud computing experts, for private and public environments. This is a consequence of the fact that even more companies are switching from the classical server infrastructure to cloud solutions. Soon would be the scenario, where a shift from in house big data analytics to “AaaS” model will be quite evident.

Cloud Computing and Big Data Jobs Market is getting huge , in fact its already huge. Some of very high paying jobs are in Cloud computing and Big Data where the roles like Cloud Architect, Data Scientist are highly coveted.

Hope I answered the question “Why Learn Cloud Computing and Big Data ?”

Do let me know your opinion in comments :)



Saturday, 23 August 2014

Introduction to RESTful Webservices in Java with Example Code

RESTful web services are lightweight web services as compared to SOAP based Web services.
Most developer use RESTful web services to interact with any other entity on web using HTTP methods.
Some of often cited examples include

  1. A Hybrid Mobile Application interacting with Backend Business Logic
  2. A device/sensor sending data to Web application on web in context of Web of Things.
  3. Exposing the code of a web application to outside world for purpose of creating mashups.
  4. Two or more web application interacting with each other.

There are many use cases and examples to highlight simplicity, robustness and scability in RESTful web services.

The power point presentations, starts with introduction of REST Principles and then focuses on
RESTful web services, later in the end the ppt includes a simple Java RESTful web service developed using Jersey framework with Eclipse and Apache Tomcat v7.

 
Do watch out for more updates on Cloud Computing , Big Data , AWS, and introductory articles on SDN.

Good Day !! :)

Monday, 26 May 2014

Now its "Modi Sarkar" What it means to me ???


“Abh ki bar Modi Sarkar “ was the slogan across the youth in the country. And now its “Modi Sarkar” at Delhi.

It feels like something is achieved , ( though its more a illusion ) when I watch news channels which talk about Modi sarkar every now and then , they have a reason to do so , guess what ?? , yes TRPs they know that Modi is public figure and very one wants to see him and hear him.

But what actually the youth want from NaMo ? Off-course the most prominent ones are Jobs, Good quality Higher Education, Corruption free environment.

Youth believed in Namo because he had his Gujarat Model to showcase. And now he is into Power at 7RCR.

But is it the end of the story ??? Definitely a big nooo... !! Well we all said “Abh ki bar Modi Sarkar” and we voted too, to put NaMo into power so that he can take his Gujarat model to Country wide model. And now its time to say “Ab kare yogdaan Desh keliye isbar Modi Sarkar ke Sath”.

We youth can't leave everything up to to Modi , don't forget that we are a nation with huge population. It's a daunting task to govern such a huge democracy which is struggling with internal and external issues, Modi alone can't do that. He needs our support. We can support him by being good citizen and a responsible youth.

Its sad that youth of India is more active on Social networking sites commenting on various issues and topics but does nothing to society. Criticizing and advising solutions is far easy , that too on social networking sites but to put your words into actions in real world is altogether a different thing.

Its not the Governments which develop the nation , its the people, their attitude , their thinking , their perceptions , their vision , their actions make the nation prosper. India being a powerhouse with huge potential young workforce , its young brigade can change the country's future only if they decide to do so and come into action to do so !!!

Governments let people realize their goals by providing services abiding to the constitutional framework, protecting people by law enforcement. If a Govt does not provide proper services then people don't get opportunities and the country suffers due to lac of growth. Such Governments are shown their way and recent election is an good example of that.

Lets hope that we wont be the same youth which criticizes the govt for doing nothing and does nothing but a vigilant and vibrant youth which has decided to change the country's future and jumped into action to unleash its hidden potential !!!!!.

Jai Hind !!!
P.S.R Patnaik.
This is my first non technical article , so pardon me for errors though you can debug them and let me know :)

Sunday, 20 April 2014

Creating Stateless Session Bean Using NetBeans 7.4 with Companion Video on YouTube

In this article we will learn how to create a Stateless Session Bean in NetBeans 7.4. There is a screen cast video for this article on YouTube (Creating Sample Stateless Session Bean in NetBeans 7.4)


Session beans are the part of Enterprise Java Beans (EJB) which are based on RMI as basic foundation technology. Good Introduction to Enrerprise Java Beans its types and application is been provided by Oracle Inc on its site at  J2EE Tutorial (PDF)

A stateless session bean does not maintain a conversational state with the client. When a client invokes the methods of a stateless bean like Remote Method Invocation , the bean’s instance variables may contain a state specific to that client but only for the duration of the invocation. When the method is finished, the client-specific state should not be retained.

Most Often Stateless Session beans are more scalable due to their stateless nature.It is to be noted that it is developers responsibility that he/she does not include any code which may turn out to be a non-transient data for clients request for invocation of session beans business method.

When Creating stateless session beans in NetBeans we need to follow the following steps in general.
As like RMI where every client has a copy of interface containing  remote method's declaration , Session Bean's Remote interface is distributed in form of Java Class Library , a .file jar. So before we start creating session bean its good we create a blank Java Class Library Project.

We will be creating a Session Bean with business method "int getSquare(int var)" which would return us square value of argument passed. Finally we will create a java servlet to access Session Bean's business method as a client.

Step 1: Create a blank Java Class Library Project. with a proper name and remember the name of the the project created you need select this project while creating Remote interface  for Session Bean in Step 2



Step 2: Create an Enterprise application with EJB Module and Web Project. Ensure that you are selecting GlassFish as a Server ,since Apache Tomcat does not come with EJB Container.





After you are done with creating  Enterprise application you will find that two projects have been created one with EJB module and Other with Web Module in which you write a Servlet to act as Client.

Add a new Session Bean to the EJB module , the type of Session bean should be Stateless and also create Remote and Local Interfaces for the created Bean



While creating Remote interface you need to select the Java Class Library Project which you have created in Step 1 to hold Remote interface which would be containing Business method's declaration.


 Add a Business method to your Session Bean



Step 4: Create a Servlet in Web Project and call EJB's Business method







Step 5: Deploy the Enterprise Project and call servlet in browser by using its context path.


Your Servlet's output should look somewhat like below screen




Happy Coding !!! :)







Tuesday, 15 April 2014

Creating your First Ruby on Rails (RoR) application using scaffolding on Windows with Rails in 7 Steps


We will use Bitnami Ruby stack on Windows Environment through out this article

If you are absolute beginner and need to start from knowing what is Ruby and Rails try below links  
Once you get acquaint with basic syntax of Ruby try out basic ruby code snippets in an interactive shell like web environment here at http://tryruby.org

Prerequisites for this article:
Bitnami Ruby Stack: (You can download the Bitnami installer at URL).

Once installed it starts appearing in your start menu as 
Start > All Programs > Bitnami Ruby Stack

Bitnami Ruby Stack is an Ruby environment with Rails and other software stacks like Apache , MySQL , PostgreSQL. It is good starting point when you start learning RoR development since here you need not struggle with RoR installation and other configurations, Remember that Bitnami Ruby Stack is for development purpose only. And I further feel that Production RoR environment should be using Linux and nginx as Web Container.
So lets start developing our first application in RoR by using scaffolding.

But what is Scaffolding in RoR ?? 
Rails scaffolding is a quick way to generate models, views, and controllers for a new resource in a single operation, scaffolding is the tool for the job to be get it done quickly. Scaffolding should be used as a starting point but for creating production scale application many developers prefer writing their own code. Let’s use scaffolding here to generate a simple application in which we will model an application which stores names and their emails.

Let’s begin
Step 1: Open your Ruby console
Go to Start > All Programs > Bitnami Ruby Stack > Use Bitnami Ruby Stack.

Step 2: You will find a console into the directory where you have installed Bitnami Ruby Stack.
In my case its “C:\Bitnami\rubystack-1.9.3-22”

type “ruby –v“ to get verison of Ruby and “rails –v ” to get version of Rails


Through this console you will be creating a new application and will also be generating scaffold application.

Step 3: Type following command to create a new Rails project. Ensure that at this point of time you have active internet connection.
rails new projects/emailcontactsapp
this command creates entire project structure specific to RoR in directory C:\Bitnami\rubystack-1.9.3-22\projects\emailcontactsapp and installs ruby gems required for the application . It stops for a moment , typically 5-10 minutes depending upon your internet bandwidth , till all required gem files are installed.
The output window after successful execution of command will be as



Step 4:  The command executed in Step 3 creates blank project structure with essential files for an RoR application. Once the project has been created its time to create a model and scaffold for the model created. We need to take note that RoR apps are MVC apps so creating model implies that you need to create View and Controller entities. Here since we are using scaffolding approach we only specify the model name and Controllers, Views are generated as to allow basic CRUD style operations.
Lets generate the model with name contacts which would store name and email, hence we will choose our database to contain two fields namely “Name as string” and “Email as string”
cd into the application directory with command
cd  projects\emailcontactsapp
And the command to generate scaffold will be
rails generate scaffold contacts Name:string Email:string
Your command prompt screen should look somewhat like screenshot below after the command successfully executes.


You can observe that we have specified that we are using scaffold and contacts as model name and “Name” of type string and “Email” of type string as two fields of database. 
Here it’s important to know that we are not creating database, it will be created in further steps by issuing command “rake db:migrate” . Also we are using default sqlite3 as database backend for our model. In case you wish to use Database servers like MySQL , Oracle , and others you need to install required gems and specify database connection and access credentials in file
<project-path>/config/database.yml. Let’s stick to sqlite3 as of now.  
Following are further types of fields supported in scaffolding 
:binary
:boolean
:date
:datetime
:decimal
:float
:integer
:primary_key
:string
:text
:time
:timestamp

Step 5: Now that we have generated Model, Views and Controllers , the only thing remaining is to create database  and appropriate fields in the database which were specified as a part of scaffold command. Inour case those fields were Name and Email.
Its quite easy just execute command
rake db:migrate
Output should be stating that “created migrating …..” look at the screenshot below

Step 6: Now its all done , just we need to start the development server and your contacts RoR app is ready and functioning
To start the development server type the command
rails server
Note down the port number at which development started , in most cases the port number would be 3000. In case if ports are already in use try killing the process which is using the concerned port and retry the command to start development server. 
Alternatively you can also specify the port number at which you intend to start the development server
by command rails server -p <port number>



You can see that in my case development server started at port number 3000
Let’s browse the URL http://localhost:3000/
you will find the default webpage which we are not interested rather we are interested in the Views created by scaffolding.
To view those Views
Go the URL http://localhost:3000/contacts
you will see that I appended the model name which I have created during Step 4.
Below are the screenshots when you visit various links on the application. You can see that you are able to add new contact , delete, modify, and show the contacts.
Step 7: To shutdown the development server hit Cntrl+C

Hope you got your first RoR app running !!! Happy coding !! 

Screenshots of output of application running on development server.






Saturday, 22 March 2014

The Cloud and Amazon Web Services

My presentation on Topic "The Cloud and Amazon Web Services" on 22nd March 2014 @ WIT Solapur.


Monday, 27 January 2014

Project Areas and Ideas for Undergraduate and Graduate level CS/IT Enggineering

The most intriguing question in your minds when you are at a stage to choose your graduate or undergraduate projects is  "How to choose an Project area ?" Well by asking following further questions to yourself, will assist you in choosing most suitable project area for your Course.

1) What's the duration you have to complete the project ?
2) Do you have enough knowledge about the area you wish to do project in ?
3) Do you get any guidance in case you get stuck (technical guidance) ?
4) Which development language you will choose ?
5) Do you know how to manage your project ?
6) Do you have geeks in your group (monkey coders , your friends with big lenses spending time learning new technologies :-) ) ?
7) Do you know what exactly are you doing (with your Project Idea)???
8) Constant activity on Project required !!

Some Prospective Project Areas in CS but not limited to !!


  • Web Technologies
  • Cloud Computing and BigData Analytics
  • Databases
  • Data mining & Web Mining
  • Operating Systems and System Programing
  • Computer Networks (Internet of Things & Web of Things)
  • AI and Machine Learning
  • Image Processing
  • Robotics
Web Technologies:

  • Creating  Web Services , Web Applications for niche areas and domains.
  • Social APIs. Analytics , Recommender Systems.
  • Improving Usability in Websites.
  • Sky is limit in Web Technologies and also includes Mobile Apps as an associated area Android , iOS apps.
Prominent Tools & Languages used: Android , Java , .NET, jQuery, RoR , Python. PhoneGAP ,SenchaTouch ,MobilejQuery Social Net APIs.

Cloud Computing and BigData Analytics:

  • Security issues in Cloud Computing.
  • Evaluation of Realtime problems on Cloud Computing.
  • Developing Cloud Computing Prototypes on Low Computing Devices.
  • Use of Hadoop or developing MapReduce Framework
  • Developing BigData Analytics applications  for real-time and real world applications
Prominent Tools & Languages used: Eucalyptus ,OpenStack , AppScale. Java , .NET, Hadoop (Hive ,Pig), Pentaho ETL , R (Statistical Computation Suite)

Databases & Related Technologies:

  • Working on conversion of Databases from one form to other.
  • NoSQL systems & issues pertaining to it.
  • Indexing/Caching/Optimization in Embeded databases.
  • Optimization issues in Mobile , Object Oriented Databases.
  • Distributed Mobile Databases.
  • Cloud & Databases.
Prominent Tools & Languages used: Java, .NET, MySQL ,Oracle Express Editoin. PostGreSQL. NoSQL: MongoDB ,CouchDB, Apache Cassandra.

Data mining & Web Mining: (A domain of Machine Learning)

  • Applying Data mining algorithms to solve various problems like Optimization,Recommendatoins.
  • Use of Mining algorithms in Web Analytics Softwares (Eg TrendingTopics.org ).
  • Developing Recommender Systems employing use of Machine Learning Algorithms (Eg Amazon Recommendations ).
  • Text sumarizatons algorithms. (Eg Google News)
Prominent Tools & Languages used: Python,Java ,C ,.NET, Weka, GATE (General Architecture for Text Engineering)

Operating Systems and System Programing:

  • Building Bare Metal Distribution for specific needs. Eg StackOps
  • Imroving existing OS algorithms for Applications running in Parallel execution environments.
  • Custom OS for special Problem domain. Eg Merlin , Chorus ,Amoeba
Prominent Tools & Languages used: C (very important) , Linux Programing
(Work under Linux OS is a must).

Computer Networks:
(In context of Internet of Things & Web of Things)
  • Creating Network Monitoring , Analytics tools or modifying existing Open Source tools.
  • Developing p2p protocols.
  • Creating network of sensors using Internet of Things and Web of Things.
  • Attempt to improve performance of TCP/IP protocols in special application domain ,areas.
  • Developing security surveillance and Home automation systems using IoT and WoT standards and technologies.
Prominent Tools & Languages used: C,Java, Python, .NET, WireShark , TCPDUMP, NS2/3. Linux programing and awareness (Work under Linux OS is a must).

Machine Learning: (AI, NN, Genetic Algorithms,Machine Learning Algorithms)

  • Use of various existing algorithms and techniques in solving optimization problems in CS.
  • Requires extensive Mathematical Knowledge and Analytical Programming skills
Prominent Tools & Languages used: OpenNLP, Apache Mahout, Weka, Java.

Image Processing:

  • Use of Algos to process images for specific application domains. (Eg vehicle number plate reading at Traffic signals)
  • More examples: Background Extraction,Video Frames Processing, Scene Detection, Image detection ,Face Detection.
  • Image Databases and retreival ,Querying , Indexing and effiecient Image Processing on Mobile devices.
Prominent Tools & Languages used: C,C++,Java, C#, Matlab*,Scilab,OpenCV.

Robotics:

Anything which can SENSE ,THINK & ACT is called ROBOT.
(Something which you control using remote control is not a Robot !!!!!)

  • Creating application domain specific Robots can be good undergraduate Project.
  • Requires C coding , and knowledge of Linux ,Serial Programing,
  • You will work with Embeded Devices and Sensors like: Arduino ,RaspBerry PI, Netduino
(I can help you get started in this area ).

Miscellaneous:

  • Use git , SVN for writing & maintaining your code.
  • For Java Use: Eclipse / Netbeans
  • .NET: Visual Studio, SharpDevelop.
  • C/C++: Use Eclipse CDT.
  • Firebug , IE Debugger for Websites.
  • Python: Eclipse
  • Follow proper naming conventions, standards
  • Try to contribute to Open Source Community. Put your project on GitHub for future developments let other benefit from your work as you benefit from Open Source.

Very Important !!!!!

  • Keep it Simple Stupid !! (In short KISS ) Keep your projects simple and useful
  • Most useful code snippets for your project can be found out at Google Code Search (http://code.google.com/codesearch) & Google
  • DON'T Forget Your GUIDE !!!!!