Tuesday, 2 December 2014

Developing Apps for your Android and Ios Device using Ionic



Hi All in this tutorial I am going to explain how to develop a hybrid application using your favorite programming language HTML/CSS/JS. Now a it is a huge demand for mobile application every product expected to have a mobile application for it. The platform has diverged into multiple operating system from Ios, Android, Windowphone, Firefox and Ubuntu touch. Each OS has it is own programming language to develop apps. So for developer learning multiple language and writing your mobile application for each product is little tedious. So it will be worth to know a platform where you can develop once and run it on multiple platform.
Here we are going to using Ionic framework to develop your hybrid application using the well known programming language HTML/CSS/JS.
What is Ionic?
Ionic is a powerful HTML5 native app development framework that helps you build native-feeling mobile application all with your favorite web technology like HTML/CSS/JS
Ionic uses a Angular JS, Cordova/PhoneGap to develop a native feel mobile application which runs on all the mobile platform. [Currently limited to Android, Ios, and Firefox]
Setup Ionic for Development
Ionic uses a very famous javascript framework called nodejs for development. nodejs is a very simple and powerful server side javascript framework.
  • Step 1: Install the nodejs framework
Download it from here : nodejs.org/download/
  • Step 2:  Check the nodejs and npm version
    • Open your command prompt/terminal and check the nodejs installed successful or not by typing the below command
      $> node –v
      $> npm -v
image
  • Step3: Install cordova
    • Installing Cordova which will take our app and bundle it into a native wrapper to turn into a traditional native app.
$> npm install -g cordova
  • Step 4: Install ionic a command line utility to start, build and package Ionic apps.
$ npm install –g ionic
  • Step 5: Create a Blank Project

    • We need to create a new Cordova project somewhere on the computer for the code for our app
    $> ionic start todo blank

    • Here “start” command tell we are creating new project

    • todo is our project name

    • blank is a temple mean it will create a blank project you can use the below command to create a different type of projects.

    • tab, slide

  • Step 6: Run A local server to test your project

    • If you don’t have android or Iphone devices you can use your browser to test the code. Start the browser using below command.

    $> ionic serve

    • Now you can see the live preview of your app here.

  • Step 7: Build and emulate your App

    • If you have android or Iphone devices you can build your app and testing on your devices.
    $> ionic build android < it will build your app for android phone>

    $> ionic build ios < It will build your app for Iphone>

  • Step 8: Test your app on Emulator

    • You can use the simulator to test you application

    $> ionic emulate android < it will emulate your app for android phone>

    $> ionic emulate ios < It will emulate your app for Iphone>
  • Step 9: Test your app on Real deviecs

    • Connect your android/Iphone into the USB port of your machine.

    • Make sure that developer option is set on those devices.

    • Follow the below steps to setup the android SDK
For setting up in Ubuntu
If you are running a 64-bit version of Ubuntu, you'll need to install the 32-bit libraries since Android is only 32-bit at the moment.$ sudo apt-get install ia32-libs If you are on Ubuntu 13.04 or greater, `ia32-libs` has been removed. You can use the following packages instead: $ sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0

For Setting up in Windows


Windows users developing for Android: You'll want to make sure you have the following installed and set up.
NOTE: Whenever you make changes to the PATH, or any other environment variable, you'll need to restart or open a new tab in your shell program for the PATH change to take effect.
Java JDK
Install the most recent Java JDK (NOT just the JRE).
Next, create an environment variable for JAVA_HOME pointing to the root folder where the Java JDK was installed. So, if you installed the JDK into C:\Program Files\Java\jdk7, set JAVA_HOME to be this path. After that, add the JDK's bin directory to the PATH variable as well. Following the previous assumption, this should be either %JAVA_HOME%\bin or the full path C:\Program Files\Java\jdk7\bin
Apache Ant
To install Ant, download a zip from here, extract it, move the first folder in the zip to a safe place, and update your PATH to include the binfolder in that folder. For example, if you moved the Ant folder to c:/, you'd want to add this to your PATH: C:\apache-ant-1.9.2\bin.
Android SDK
Installing the Android SDK is also necessary. The Android SDK provides you the API libraries and developer tools necessary to build, test, and debug apps for Android.
Cordova requires the ANDROID_HOME environment variable to be set. This should point to the [ANDROID_SDK_DIR]\android-sdk directory (for example c:\android\android-sdk).
Next, update your PATH to include the tools/ and platform-tools/ folder in that folder. So, using ANDROID_HOME, you would add both %ANDROID_HOME%\tools and %ANDROID_HOME%\platform-tools.










    $> ionic run android

Now you can see the app running on your phone. No need of leaning internal of Android. and design the UI with XML. Your simple web programming knowledge is more than enough to develop a hybrid application which can run on all the platform. In My next tutorial I will explain using different ionic tags to design your UI. Keep posting your comments here.

Tuesday, 2 September 2014

Must know programming languages for Developer

If you want to be a developer and like to begin your career in programming field. Then these are the top 10 programming language you should know. Understanding at least one programming language also makes an impressive addition to your resume.

In this article I am going to list out the popular programming language and its online tutorials reference.

1. Python:

Python is developed for non programmer to write a basic program for their needs. But later it become the one of the popular high level object oriented programming language. Its readability and compact syntax make it easy for beginners. Now a days it can be used as a server-side scripting language for website, Scientific calculation, Mobile and Desktop application development, Test automation scripting and etc. It is also used by Google, Yahoo! and NASA, Instagram and Pinterest. You can learn python from  Codecademy,Lynda.com, LearnPython.org, Python.org

2. PHP:

It is a free open source server side scripting language which is designed for dynamic website. Most of the dynamic website in the world are powered by PHP. It is very famous among web developer due to the reason that it can be directly embedded into an HTML source document rather than an external file, which has made it a popular programming language Learn PHP from Codecademy,Lynda.com, Treehouse, Zend Developer Zone , PHP.net

3.Java Script:

It is a client and later become server-side scripting language for developing interactive or animated web functions. It is also used in game development and writing desktop applications. It derives much of its syntax from C. It is developed by Netscape for their web browsers project. One important things to note is it is not Java programming language, In syntax it may look like JAVA but in reality it is completely different programming language. Learn this langue from Codecademy, Lynda.com, Code School, Treehouse, Learn-JS.org

4. Ruby:

Ruby language is object-oriented scripting language for developing websites and mobile apps. It is very famous in recent days. It powers the Ruby on Rails framework, which is used on Scribd, GitHub, Groupon and Shopify. Learn Ruby from Codecademy, Code School, TryRuby.org, RubyMonk

5. C Language:

It is a general purpose programming language which was developed in the early 70s. C is the oldest and most used language which leads to other language like C#, Java, JavaScript and Python. C is mainly used for implementing operating systems and embedded applications. It also provides foundation for other languages too and learning C language is highly recommended which makes learning other programming language very easy. Learn it from here Learn-C, Introduction To Programming ,Lynda.com, TITLE, CProgramming.com, Learn C The Hard Way

6. C++:

It is object oriented version C programming language which is designed to enhance the C language, C++ powers software like Firefox, Wimamp and All Adobe programs. It develops system software, applications software, high-performance server, client applications and video games. Learn this language at Lynda.com, CPlusPlus.com, LearnCpp.com, CProgramming.com

7.Java:

This language has a huge demand mainly for enterprise software, more secure web based content, games, mobile app and very famous Android OS. Java can work across several software platform which means if its written on Mac OS then it can also run on Windows and Linux. It is developed by Sun Microsystems in 1990s which was bought by Oracle. So Oracle is a current maintainer of the Java development tools.

8.C#

I can say this is windows own implementation of Java. It’s called “C-sharp”. C# is a multi-paradigm language which was developed by Microsoft as part of its .Net initiative. It combines principles from C and C++. C# is a general purpose language used to develop software fro Microsoft and windows platform. You can learn it from Lynda.com, Microsoft Virtual Academy,TutorialsPoint.com

9. Objective C

If you hear this word first don’t’ scare this is nothing but Apple version of Java. We have three major platform which spread across the world. Linux, Windows and Apple Mac OS. Objective C is again a general purpose, object-oriented programming language and its used by Apple’s operating system. It powers Apple’s OS X and iOS, as well as its APIs. It can also be used to create iPhone apps. Learn it from Lynda.com, Mac Developer Library, Cocoa Dev Central, Mobile Tuts+

10. SQL:

Structured Query Language(SQL) is a special-purpose language which is used to manage data in relational database management systems. It is used for the “Query” function, in searching informational databases. SQL can be learnt from Lynda.com,SQLCourse.com, TutorialsPoint.com, SQLZoo.net

I hope this article will give some insight of top 10 programming langue which is used by most of the Software companies. Feel free to give a comment below.

Tuesday, 5 August 2014

Me2Mentor

Hi All, In this post I would like to share my experience as mentor for mentoring more than 200 girls in my native place Madurai for Technovation challenge 2014. The journey of 12 weeks with these young talents were really unforgettable in my life. I felt that my knowledge got enlightened during this mentoring program.

Motivation behind mentoring
God creates human with imbalance mean someone has more knowledge, high IQ someone struggle to learn new thing. Someone is reach forever, someone is poor by birth. I believe this inequality is to make sure that humans balance themselves and live a better life. So if your are geek by nature make sure that your knowledge is equally shared with everyone. If you are rich by birth make sure that your money is equally distributed to everyone.

About Me
This is Senthilkumar working as a Research engineer in Qualcomm Inc Bangalore. I was born and brought up from Madurai. I did my graduation in electronics and communication engineering from KLN College of engineer Madurai and passed out from 2010. I am basically mentor who love to motivate young girls in technological and research field. The main objective is to make them a future entrepreneurs. To know more about me check out here www.allaboutsenthil.appspot.com

About Technovation
Technovation is the global technology entrepreneurship program for girls, with over 1,300 alumnae from 19 countries. Middle school, high school, and university students work in teams to research, design, build, and launch a mobile app prototype through a 50-hour curriculum over 3 months, with guidance from dedicated teachers and female mentors who are professionals in STEM and business careers. Then they pitch their mobile app "startups" to real investors via YouTube and compete for a chance to travel to Silicon Valley to make live pitches for $20k in awards. No prior app development experience is necessary and it’s free to participate. Learn more at http://technovationchallenge.org


Technovation Challenge in India
WeTech(Women Enhancing in Technology) is an NGO which brought this Technovation program to India this year. They have partnered with companies like Qualcomm, Google and Goldman Sach, to execute the program in India to give opportunity to young girls. I was invited to be a Mentor representing QUALCOMM to mentor one team based on Bangalore NPS (National public School).

Conducting Technovation in Madurai
But I was born and brought up from Madurai I would like to bring this opportunity to Madurai. I know girls in Madurai have lots of potential to create execute new ideas and compete with teams in world wide.
To recruit young girls for this program I started composing mail to all the Women College in Madurai. I collected their mail id from college website and send a mail about Technovation program. But unfortunately I didn't get any response from any college. So I requested my sister ManiMala to create awareness about this program. I asked her to register as a regional coordinator. She was alumni of Madura and Thaigarajar College. She went to those colleges and gave a presentation about this program. As a result she recruited more than 200 girls from these two colleges.




Initial thoughts of mentoring
After recruiting the mass 200 girls we started registering the student’s team names in Technovation official site to get the study materials and other stuffs. The initial thought of my mentoring is to have Hangout session or Skype call to all the team on every weekend to prepare them for the contest. But later I realized most of them don’t have access to internet. But it doesn't stop me I started executing the plan B mentor them face to face.
Weekends in Madurai
To organize the face to face mentoring the biggest problem is a common place where we can bring these girls and teach the Technovation Curriculum. We requested Madura College to give the permission to conduct this program on weekend. The most challenging task in the entire journey is to convince the college to get the place in their campus, But Principal of Madura college and Latha mam professor Zoology department, Madura College made it easy. We have to say a big thank to Pricipal and Latha mam, without them Technovation in Madurai is one of my dream I use to have. I started travelling to Madurai on every weekend to teach the Technovation curriculum.



Organizing the Classes
Mani Mala work on weekdays with Latha mam writing the letter for the permission, schedule the class timing and inform the girls about the class. The interesting part here is passing the class information to these girls. Basically they don’t have access to internet, so we can’t send a single mail to all the register girls about the class timing. The next only option is to send a SMS to them as they all have basic phone. We have 200 register girls which mean we have to send 200 SMS. But as per the TRAI regulation in India you can only send 100 SMS per day. So we split into two groups first 100 ManiMala will send SMS and next 100 students I will send from my number. We have class on both Saturday and Sunday morning 10AM to 1PM. The purpose of having class on two day is if student who missed the class on Saturday due to some personal reason still can attend the same on Sunday.


Life changing 12 weeks
These are the Technovation curriculum for the 12 week program which I taught to these girls for the past three month
Week Lesson
Week1
  • Learn about App Inventor and complete and hack tutorials
  • Complete Mole Mash 2 before lesson 2
Week2
  • Brainstorm your app idea with your team
  • Complete the Videowall2 tutorial before lesson 3
Week3
  • Create a survey and ask 20 friends to take it
  • Outline a plan for completing prototype.
  • Complete the ColoredDots tutorial before lesson 4
Week 4
  • Analyze competition by testing usability of similar
  • Finish paper prototype and bring to class next week.
Week5
  • Test your paper prototype and incorporate feedback from peers
  • Finish skeleton of screens in App Inventor.
Week6
  • Complete business model worksheet in Student
  • Continue to work on app prototype-- implement all transitions in the locks editor to help the user move from one screen to another
Week7
  • Complete Business Plan template draft
  • Update your personal brand on social media
  • Logo and color scheme for your app
  • 100-word app description
  • Collect feedback on your app description
Week8
  • Finalize your Business Plan – type it up
  • Show at least 3 functional screens of your app
  • Beautify your app look
Week9
  • Complete 50% of your PowerPoint slide deck
  • Plan for your pitch presentation
  • Test your app with a user and make adjustments
  • Collect evidence/images from social media promoting your app for your presentation
Week10
  • Work on final deliverables
  • Assign a team member to each deliverable that needs to be completed
  • Make sure the team is in agreement on who is working on which deliverable
Week11
  • Insert at least 3 functional screen shots of your app prototype into your presentation.
  • Practice your pitch and record feedback.
  • Shoot your pitch video and edit the video
Week12
  • Make a plan to upload final deliverable by May 2nd




Deliverable submission
The 12 weeks mentoring 6 hackathons finally these girls able to give life to their ideas. The deadline for deliveralbe submission is May 2 2014. As end of the 12 week curriculum this girls has to submit the below deliverable to Technovation.

  • Presentation PPT
  • Business plan
  • Product description 100 words
  • App pitch video 4mins
  • App Demo video 2mins
  • App screen short (3)
  • App inventor source code.

Mentor to director
Pitch video is an one of the important deliverable in the contest. But the challenge is taking the pitch video and uploading it to YouTube. As most of the team have basic phone they are not able to record their pitch video. So our last week hackathon we decided to have pitch recording for all the teams. I used my digital camera and Nexus phone to shoot their pitch video. This is the funniest part of my mentoring experience me and my sister literally become a movie directory and dialog writers. These girls will give their pitch script in Tamil and we translate it to English and give a practice to them to make sure they talk the entire 4 mins in English. This is really different experience for them. There are multiple retakes yeah it is really fun we enjoyed the weekend a lot.

Wrap up and Submit 
The have completed their paper and ppt prototype of the idea. They completed their android app in app inventor. They prepared their business plan with app demo video and pitch video. These deliverables are submitted to Technovation forum on May 2, 2014. All the teams deliverable went to different level of judging from mentors all around the world as a result three teams from Madurai got selected for best idea in Regional category .Other team got selected for different category.

Girls in Bangalore 
Top three teams from Madurai invited to attend the WeTech Pitch event in 19th July Bangalore. I have booked ticket for all the team from Madurai to Bangalore. This task not really easy as i expected. Because all these girls are first time travelling outside Tamil Nadu. So their parents are not ready to send them alone. I called all the parents and convinced them that how important this trip for these girls career. That weekend i made more than 65 calls from my phone to convince their parents to send them to Bangalore. Finally they agreed to send them, they boarded bus at 9:30 PM Friday 18, July from Madurai and reached Bangalore at 7:30 AM Saturday 19, July. I went to bus stop to receive all the girls. In Saturday morning i am able to see more excited faces, for them visiting Bangalore is like visiting US at first time. All are more excited and happy. Here i want share one thing i am somewhat good in mentoring but completely Zero in organizing i felt that organizing is the toughest job. The entire 12 weeks my sister take care of organizing events i just went their and start sharing my experience with them. But this time my sister did't come with these girls due to some personal reason. I am really clueless how i am going to manage all the 15 girls. I have to arrange place for refreshment, breakfast, transport facility to reach the event. I planned everything perfectly but i don't know how i am going to execute as a single person. Then i asked help from my colleagues Vijay and Suganya. They immediately accepted my last minute request and stayed with me a whole day. Here i have to thank them that you people made it.   As the plan is that Wetech event starts at 2PM. So i thought of giving lab tour to these girls in our Qualcomm Bangalore in Morning and afternoon i can bring this girls to the auditorium.

Girls Visit Qualcomm
I have to thank my colleague and mentor Dhana who helped me to get permission to visit our lab from security team. I brought this girls inside our RF LAB and demonstrated some of the board and wireless chips. I have explained them how we works and what product we are making. I hope all of them got some inside of  Tech companies.



Winning Moment
The Top three winners from Madurai team was invited to Bangalore WeTech pitch event to collect their prize and form the networking with industry top people. The pitch event happened on July 19, 2014. Two teams from Madura College and one team from Thiagarajar College got selected for the WeTech pitch event. For remaining team there is next Pitch event will be happening in Chennai on second week of September


What Next

  • Let Start a company
  • Me2Mentor
  • MentorSpace
  • Connect More
  • Teaching Open source Technology

Let Start a company
Technovation is not just a contest where girls will develop their android application and winner will get prize. This is more than a contest, the whole objective of the program is to motivate these girls to start a technological company using their idea. They will pitch their ideas to Venture capitals and investor for funding. To enable this dream i am working with these girls to develop a platform called Me2Mentor and MentorSpace. Technovation got over but still i am travelling in weekend to teach opensource technology such as Linux and python to these girls.

As a end result young girls (technovation participants)  from Madurai started their own company TheScreenInc and applied for startup programs 10000startups, Google Fast track and citrix startup accelerator. They are waiting for the result. I pray god that they should selected for this program to make their idea into a product to touch people lives.

About Me2Mentor
Me2mentor is a software platform which provides opportunity to everyone irrespective of Geo location and internet facility. The idea is anyone who having passionate about technology and want to pursue their career in research field can use this platform. A basic phone with SMS facility is more than enough to get everything Me with these girls are developing this platform using Python, Google app engine and twilio voice and SMS API.It will be great if some googlers ready to help us to bring this platform.up and running in Google cloud.

How it is working

  • To Register in Me2mentor platform just send an SMS with REG <your name> <interest> <institution> to Me2mentor platform
  • After successful registration you will get a unique Id for further communication.
  • If you have idea want to validate with right people send an SMS IDEA <uniqid > <idea description>
  • If your idea is really good Me2Mentor will tweets your idea to celebrity twitter page to get more visibility
  •  If you want to connect to mentor send an SMS MENTOR <<uniqid > <area of interest>
  • Student can use the MentorSpace to have live hangout with mentors.

What is MentorSpace
Mentorspace is a physical location or class room with one projector, one Laptop with 3G dongle and sufficient space to accommodate 30 students. where we connect the young girls with right mentor. we are talking with Colleges and Schools in Madurai to create a Mentor Space in their campus. We need companies support to arrange this stuff in mentor space to connect these girls with a right mentor anywhere in the world.

Connect More

  • We are really working hard to connect more girls with WeTech and Technovation. 
  • We hope Technology challenge 2015 the girls list grow up from 3digit to 4 digit. 
  • I am translating all the Technovation curriculum to Tamil to avoid the language barrier and make sure this curriculum should reach every one. 
  • App inventor demo in Tamil. I am making some of the basic app inventor tutorials in Tamil and plan to upload it to YouTube.
Teaching open source Technology

We are working with Firefox team Larissa Brown Shapiro and Priyanga NG(Firefox India Women Representation) to conduct a Firefox Webmaker workshop in Madurai. Created a Madurai Ubuntu Loco to create awarness about open source technology























Friday, 27 June 2014

Vim a beginning

 

Contents

  • Introduction
  • Mode of Operations
  • Commands for basic Operations
    • Opening a File
    • Inserting Text
    • Moving around
    • Copy & Paste
    • Undo & Redo
    • Search & Replace
    • Save & Quit
    • Splitting windows
    • Advance Options
  • Conclusion

 

Introduction

The VI editor is a one of the most powerful text editor which has a very extensive functionalities to allow developer enabling to edit files with a minimum of keystrokes. This power and functionality comes as a cost. This article I am going to explain basic command which helps you to put your hands on in VIM editor to write your program.

Mode of Operations

VIM has three modes of operation.

  1. Command Mode : This is the mode VIM starts in by default. In this mode, most keys on the keyboard are defined to specific command. At any time, pressing the ESC key and typing colon : returns the user to command mode.
  2. Insert Mode: This mode allows a user to start inputing data into file. To reach this mode, press i or o
  3. Visual Mode: This mode allows you to do the visual operation which is common in grapical editors like selecting punch of lines copy/pasting/deleting the text in the editor. Pressing v will enters you in visual mode.

Commands for basic Operations

  • Opening a File

 

 

Commands

Descriptions
vim This will start the empty vim editor
vim [File name] (eg. vim hello.c) This will start vim editing the specified file(or create a new file if no file specified
vim [File name] : [Line No] (eg. vim hello.c :5) This will open the specified file with the cursor point to the given line number.
vim [File name] / [expression] This will open the specified file with the place where the expression matches

 

  • Inserting Text


     

    Commands

    Descriptions
    i Insert a text in after the current cursor position
    I Insert a text before the cursor position
    o Insert a text one line below the cursor position
    O Insert a text one line above the cursor position
    a Append a text after the cursor
    A Append a text before the cursor

 

  • Moving around


     

    Commands

    Descriptions
    k Go up
    j Go down
    h Go left
    i Go right
    w Go write a word
    b Go left a word
    gg Go to the beginning of the file
    G Go to the end of the file
    22j Go to the line no 22
    1 Go to start of the line
    $ Go to end of the line

 

  • Copy & Paste


     

    Commands

    Descriptions
    v Press v to enter visual mode
    Use Arrow keys [k, j h, I ] To select the text to copy
    y To copy the selected text
    p To paste the text
    d To cut the text followed by y to paste
    d To delete the selected text
    yy To copy a Line
    yw To copy a word
    dd To delete/cut a Line
    dw To delete/cut a word
    x To delete a character
    r To replace a character
    cw To replace a word

 

  • Undo & Redo


     

    Commands

    Descriptions
    u Undo the changes
    Ctrl + R Redo the changes

 

  • Search & Replace


     

    Commands

    Descriptions
    /<keyword> after the slash put whatever you want to find and press the enter key)
    n Find next
    N Find previous
    * Pressing star on top of the word you want to search automatically show the search result
    :noh Turn off highlighting (after a search)
    :%s/search/replace/gc It will search and replace the text in the entire document [g mean global] [c mean confirm before replacing the text]
    :1,5s/search/replace/ci It will only replace the text in between line number 1 and 5. [I mean ignore case]

 

  • Save & Quit


     

    Commands [see colon is there before ]

    Descriptions
    :w Save the file
    :!w Save it forcefully to override the readonly files
    :q Close the file
    :q! Close the unsaved file forcefully :
    :wq save and close the file
    :wq! Save and Close the file forcefully
    :x Save and close the file

 

  • Splitting windows


     

    Commands

    Descriptions
    : sp Split the window into two buffer
    : sp filename open the new file in the window
    : vsp Vertically split the window
    : vsp filename Open the file in vertical window
    ctrl + w w Switch between windows

 

  • Advance Options


 

Commands

Descriptions
Indentation

Press v and then arrow keys (or h,j,k,l,w,$) to highlight lines of text.
Type > or < to indent right or left.

: set et Use space for indenting instead of tab
: set ai set auto-indenting
: set si set smart indenting context sensitive indentation
: set nu set numbering in the file
: set nonu Remove the numbering [add “no” to any command to remove it ]
: syntex on Based on the programming the syntex will be enabled.
: ! cmd (eg. :!e filename) opens new file in vim
: !sh Go to shell prompt
ctrl + G Tell the file name and current line number

 

Conclusion

This article provides a very basic command which is used in VIM for day to  day work. As I told VIM is so powerful text editor It has more than 150 commands which provides the different functionality. VIM can be configured as better than modern IDE. It has support of editing all the modern programming language. Please feel free to give your comments in the below section. If you have any query feel free to send a mail to sentenwin@gmail.com

Setup Your Github account


Hi Everyone,
In this post I am going to explain about how to setup your Github account and Show your code ability to the world.
What is GitHub?
Github is one of the most important developments in software over the past five year. The site began in 2008 as a simple frontend for the open-source GIT distributed version control tool. It was similar to code repositories like SourceForge, Google Code,  or Bitbucket But Github has transcended the category to become an institution in its own right. Features that is pioneered are now crucial tools for any group software engineering work. It is now the world’s largest and most dynamic repository of open-source code, and a strong Github account has become more important than your CV or formal education for the most cutting-edge technology companies.
Click here to open the github website.


Select Free Account:
  Select your account type as free. If you are corporate you can select the paid account service.


Create New Repository:



  • Click on the Plus symbol
  • Select new repository option
  • Give your repository name as Sample for test purpose
  • Add the description of your repository.
  • Select the public option as it is free and it will be visible to everyone
  • For private repository you have to select the paid service.
  • Click on the create repository button.
  • Your repository “Sample” is ready now

Setup the local repository on your machine.



Installing and setting up the GIT repo on your system

$> sudo apt-get install git-core –y [in ubuntu machine] windows [Download MiniLinux]
$> mkdir repo
$> cd repo
$> mkdir Sample
$> cd Sample
$> git config –global user.name “Senthilkumar M” << Use your name here >>
$> git config –global user.email sentenwin@gmail.com <<Use your email id here >>
$> git init
$> git add README.md
$> git status
$> git commit –m “Initial commit”
$> git status
$> git remote add origin https://github.com/USERNAME/Sample.git
$> git push –u origin master /*It doesn’t work */

Pushing the local code to Github.com
  • Executing git push –u origin master will through an error.
  • We need to generate ssh keys so that Github knows that we have access rights
  • Run the following commands to generate the SSH keys.
Generating SSH key

$> cd
$> ssh-keygen -t rsa –C “sentenwin.m@gmail.com”  << Your Github id here >>
Press enter two times until it generate the key fingerprint

$> cd .ssh
$> cat id_rsa.pub

Update the public key in github site

  • Copy the contents of the above file (id_rsa.pub) and paste it to github.com site
  • Goto Setting -> ssh keys -> Add new key-> paste the key
  • Now go to github.com/settings/ssh
Authenticate your local machine to push your code to  GitHub.com


$>  ssh –T git@github.com
$> git push –u origin master /* Now it will work and upload your code to Github.com */

That’s it Now you can also contribute your code to open source. Show your coding ability to the world through GitHub. Feel free to comment below. If you have any doubt in following these steps feel free to send a mail to sentenwin@gmail.com







Get Ready to be a Developer

  • Overview
  • Who is a Developer
  • Choose your platform
  • Setup your Linux Environment
  • Select your Editor
  • Write a hello world program
  • Share your program through GIT
  • Document your program

Overview

Hello all if you are heard the word developer and wonder what they are and what they will do, and want to become a developer. This is the place to get start to become a developer. In this article I am going to setup the environment to write your first “Hello world” program and share it to the world.

Who is a Developer

A lot of people think, if they can write some code, they qualify as a developer. But it is not like that, if you don’t take ownership and responsibility for solving the overall, real business/user problem you are not consider as a developer.A good developer should understand the overall problem and its context. He has good problem solving skills, take ownership by being a part of the team and having a sense.
Before starting you have to understand the below terminology which is always used while talking between developers.
Analysis Understand your requirement and analysis with existing system
Design Draw your understanding of the problem in visible manner
Coding Translate your design into any of the programming language
Testing Validate your program satisfies your requirements
Debugging Dig through the code to understand where your program fails to satisfies your requirement
Profiling Get the performance data of your program to make it faster and better

Choose your platform

Currently there are three major platform available for development.
  1. Windows
  2. Linux
  3. MAC
Among three platform Linux is a open Source. It mean using Linux based distribution you don’t need to pay any license. So it is the most used platform in the development world. Linux has many distribution like Ubuntu, Redhat, Open Suse, Cent OS, Mint and so. Ubuntu is the very popular Desktop version of Linux distribution. So I prefer you to have Ubuntu on your PC as a dual OS if you call it yourself us a developer.

Setup your Linux Environment

If you have Linux OS on your machine you can skip this section. Here I am going to explain you how to setup the Linux environment on your windows or MAC based platform. Before starting you need to download the Development tools from the given link
MiniLinux – It is a simple light weight Linux CLI Application which mimics the Linux Terminal.
MiniLinux was developed by me on top of mobaxterm with additional plugin support which allows you to get the entire Linux environment on one click.
Click here to download the MiniLinux.
There are other tools which provides the  Linux Environment on windows like Cygwin, Installing Linux on Virtual machine, Mobaxterm free version. But setting up these environment is very complex task for beginner. When I start try to setup the cygwin in my machine at first time I am literally pissed off and I went to install the Ubuntu as a dual OS in my machine. So To avoid all sort of juggling I have created a “MiniLinux” on top of free mobaxterm with additional plugins to get a real flavor of Linux.

Select your Editor

Choosing your editor is the import thing as developer you have to do before writing your code. If you are windows user after hearing the word editor obviously the name Notepad will come to your mind. But it is not really a editor, the name suggest it is simple note taking application. So always it is better to avoid using Notepad to write your program. You have to select the editor which will increase your productivity. If we talk about editor there are two famous editor in the open source world called “VIM” and “EMAC”. In open Source world we classify the developer into two category  one who uses VIM and other who uses EMACS. Both are best editor which allows you to write a code in fast phase and increase your productivity. But selecting the one completely depends on the individuals. Here I am VIM guy so I will go with VIM.
You don’t need to download anything to setup your VIM editor I already bundle it in MiniLinux application. So just click on the MiniLinux Application, It will open the application which looks similar like your command prompt in windows. In the terminal just type vim to get start the vim editor.
VIM editor has three modes.
  1. Command Mode [press ESC and colon  : to go to command mode]
  2. Insert mode [press “I” or “O” to go to insert mode]
  3. Visual Mode [ press “v” to go to visual mode]
By default VIM editor will start in command mode to go
$> vim Open the empty vim editor
$> vim filename Open the file in vim editor/create new file

Basic vim Commands

All the vim commands only work in command mode, so always press ESC + : to go to command mode and execute the below commands.
Command Usage
I or O Go to insert mode
w save the contents
wq save and quit the file
q! quit without saving the file
gg go to top of the file
G go to end of the file
1 go to start of the line
$ go to end of the line
:help to open the help menu
To understand the vim editor in detail you can refer my another blog “vim to begin”

Setup the Local GIT Account

GIT is a distributed revision control and Source code management system.When you are working in corporate world you may have to develop a program with multiple people, and all may use the same file to develop different functionality in it, So we need a tool which helps the team cope with the confusion that tends to happened when multiple people are editing the same files.
Here I am going to explain the steps required to setup a local GIT in your machine. As MiniLinux bundle with GIT so you don’t need to download any special program to setup GIT. Just open the MiniLinux Application, in terminal type the below command
$> git --help
Which shows the usage of git tools. Execute the below list of commands to setup your local GIT in your machine
$> mkdir myrepo
$> cd myrepo
$> git config –global user.name “Senthilkumar M” << Use your name here >>
$> git config –global user.email sentenwin.m@gmail.com << User your mail id here >>
$>git init

Write a hello world program

Now your Linux environment is ready and your editor also ready to accept your code then what let start writing a simple hello world program  in C. As a Developer you have to develop your code in different programming language but for beginning purpose I will start demonstration in C.
Open your vim editor and start typing/copy the below program.
$> vim hello.c
#include <stdio.h>
int main(){
    printf(“Hello world now I am a Developer \n”);
    return 0;
}
We are using gcc to compile your program. GCC is a open source compiler for C/C++ program. Execute the below command to compile your program.
$> gcc hello.c –o hello
If your program compiles successfully without any error you will see a file in your current directory called hello. Type the below command to run the program.


$> ./hello
Program Output
$> Hello world now I am a Developer

Share your program through GIT

Until you not share your code to the world no one know you are the good developer. Sharing your program to others makes a positive impact on you career development. Company who want to recruit you will see your code and understand your coding ability before calling you for interview. To share you code to other we have open source GIT web called github where you need to create your public repository to upload your code. You can refer my GIThub blog to setup your git hub account. Before doing that first commit your changes into local GIT.
Type the below commands to commit your changes.
“Words inside the quote are command explanation ”
$> git status  “ This command show you the files which not committed”
$> git add hello.c hello.exe “Add the files to git ”
$> git status “Now it will show the different result then previous”
$> git commit –m “initial commit” “This is the commit msg”
$> git status “It will show nothing to commit mean your changes committed”

$> git log “It will show your commit history author name and date/time press q to come out”

To share your code to the world please refer my GIT blog to create an account in GITHUB website. Thanks for spending your time reading my blog. Happy coding. Feel free to give comments here. If you struck anywhere in they above steps send a mail to me sentenwin@gmail.com

Thursday, 26 June 2014

5G opportunity for innovation

5G Main Technical focus

  1. Ubiquitous and interoperability of the network
  2. Flat IP based network concept
  3. Cognitive radio technology
  4. Security related issues.
  5. Limited Frequency spectrum resource problems.

 

Introduction

The absence of official standards from 3GPP, ITU-R makes the 5G have limitless possibilities for innovation.It allows user able to access different Radio Access Technologies(RAT) using one mobile. It has been proposed to assemble the existing wireless and wired communication techniques into an all IP high performance world wide network. WWWW[World wide wireless web] which allows the subscriber quick access to the internet, dynamic movement, Favorable Bit Error Ratio(BER) and great security.It uses the resources other than frequency/time in order to increase a capacity of the system.

 

What is Flat IP based Network

  • 3G = Operator-centric Design
  • 4G = Service-centric Design
  • 5G = User centric Design

Network layer will be divided into three sub layers lower, middle and upper to provide All-IP connectivity. All-IP Network (AIPN) system developed in LTE. Flat IP based network will be used in 5G. It provides a way to identify each device using symbolic names.  IPv6 addressing scheme used in Flat IP network.  Each device have fixed IPv6 address and multiple Care of Address(CoA). The number of CoA for the device is according to the number of networks where devices is connect. lower network layer uses CoA, middle network layer translates the CoA to IPv6 address and upper network layer network uses IPv6 address.

What is Cognitive Radio

Interoperability was an important things in any wireless technology. It means any system with different technologies can work together and communicate with each other. 5G network architecture consists of a user terminal and no. of different radio technology. Cognitive radio is an intelligent communication system that is aware of its surrounding environment and choose the best wireless technology for communication.

Security related issues

Cognitive Radio has ability to scan the available spectrum, select from a wide range of operation frequency, there are challenges related to security, such as selfish misbehaviors, harmful interference and licensed user emulation. The proposed method to solve this problem is TRIESTE (Trusted Radio Infrastructure for Enforcing SpecTrum Etiquettes). It will able to ensure that radio devices are only able to access and use the spectrum in a manner that conforms to their privileges.

Limited frequency  Spectrum Resource

It is a major challenge for mobile and wireless technologies. To solve this problem currently we have different multiple access methods like Time Division Multiple Access(TDMA), Frequency Division Multiple Access(FDMA), Code Division Multiple Access(CDMA), OFDMA(Orthogonal Frequency division Multiple Access). But all these techniques are based on time and frequency. But in 5G technology we need to develop a multiple access system which is not dependent on time and frequency. So a new multiple access technology proposed called BDMA(Band/Beam Division Multiple Access)

For adapting the BDMA system in 5G, the development of the phase array antenna is required. The smart antenna with the ability to switch its beam is needed. Switched bean antennas support radio positioning via Angle of Arrival(AOA) information collected from base and mobile station.

Conclusion:

5G technology provides lots of opportunities for the researcher to come up with the solution to solve the above mentioned problems. This field has lots of potential for new ideas. I hope you all get some idea in this article let start contribute the world next fastest developing technology to touch the billions people.

Tuesday, 17 June 2014

Completed my degree what next?

So you just graduated or even lost your job and you are looking for a new one. Everywhere you look, you see bad news. Everybody seems to be smarter than you, more experienced and yet willing to take less pay for the gig. You have spent so much money running around mailing your resume. It is a messy world you say.

 

The fact is, it doesn’t get any easier. What do we do now, you ask?. I am not an expert but I will give you my 2 cents. Here are some of my favorite tricks that could get you going. NOTE:  A previous study showed that only 2 percent of professionals actually use their degrees. This means that just because you have a degree in business doesn’t necessarily mean you must work in that field.

  1. NETWORKING - I list this as the first thing to do for a reason. You are more likely to get a job through referral than other means. If there is something students in college should be doing besides studying and partying, it is making connections. Save those contacts because you will need them later. If you didn’t do so, you can still catch up by using LinkedIn and other social networks. Attend local events where you will meet new people with similar interests. There is more to networking than this short description but you get the idea.
  2. VOLUNTEER - Volunteering is not easy especially when you have bills to pay. I say this because when I refer to being a volunteer, it simply means you are offering your services for FREE. The benefits sometimes outweigh the effort. How? One thing you can do while applying for a job is mention the fact that you volunteered at company A or B. Good Karma. It is better to volunteer than to sit on your couch watching reality television and eating chips. So, find a local charity or a company that could benefit from your skills. Heck, you might even get hired if they think you are worth it.
  3. JOB-SEARCH - Oh wait a minute, I am already doing this right? I totally agree with you here but I wanted to say something more specific. It is tempting to blame the economy for lack of jobs especially when you have no idea where to look. One advice I was given by someone was that when it comes to job hunting, you should make the search a full time job. The only difference is that you don’t get paid, in fact, you spend your own money running around from office to office. Warning: Do not do this: ‘You do so many interviews, when you reach your 40th interview, you ask your interviewer the name of his company! ‘ Got it? I must mention also that you can do networking and volunteering as you job search.
  4. START A BUSINESS - If you have been trying to find a job for too long without any luck, perhaps you can start your own business in your garage. Of course this move is tricky and sometimes expensive to take. Perhaps you have identified a market gab and you feel like you can help fill it. You might be a software developer and you have a great product that could revolutionize the way people do things. With today’s world, opportunities are vast but you have to work hard and smart for it. Depending on your area of expertise, I promise, there is something out there that you can do to make extra cash. Since starting a business requires some capital, you might consider looking for professional advice on how to get started.
  5. JOIN oDESK - This is just one place where you can keep your skills sharp by doing freelance work. There are thousands of people out there looking for people like you to help them get their jobs done. You might not be paid much but you will get to build connections that could lead to greater opportunities down the road. Did I mention creating a portfolio? That will come in handy when applying for a job. You want to have something to show when your interviewer asks “what projects have you worked on before?”
  6. JOIN QUORA - This is my favorite website. You might be wondering why I even listed it here. Let me cut it to the chase: if you want professional advice, links to the best resources that you would otherwise pay a lot of hard-earned money for, help others by answering questions in areas of your expertise, and most of all, meet awesome people – Quora is your friend. It is totally FREE of charge. Warning: You might get addicted to it and that could make your girlfriend, boyfriend or spouse really mad at you – in that situation, you can tell them to blame me for it.
  7. START A BLOG - This is obviously not for everyone. Most often, maintaining a blog is a challenging task especially if you don’t have a specific idea or subject to write about. From a horse’s mouth – before I started this blog four months ago, I tried blogging and failed several times. I thought people didn’t really like what I was posting. It is easy to talk about everything and end up talking about nothing. I advise you to find something specific that you are good at and get started. Set a schedule and you will be amazed by the experience. In fact, you might be surprised by your interviewer by asking you whether you have a blog or not!
  8. WRITE A BOOK - One amazing thing about life is that when one door closes, more than one door opens. In this case, ebook publishing is a door that leads to potential success. Let us be honest here, you have a story you would like to tell. There is a book in you. If I was able to write a book and self-publish it, reach more than eleven thousand (11,000) downloads on Amazon Kindle alone, then why can’t you do it? It is amazing how things work. Give it a shot, starting with a few hundred words every day or weekend. Talk to me if you need help.
  9. EXERCISE + FOOD - I am not a food and fitness expert but we all know that you are better equipped when you are eating healthy and exercising. Just because you don’t have a job doesn’t mean you should let your cholesterol get out of control. Take care of your body. It is easier to get tempted when you don’t have enough money to eat junk food and I totally understand it. That does not mean you should give up the fight. Just do your best to remain healthy.
  10. MORE - The list goes on and on. However, I am going to stop here because I know you have other things to do. Go out there, make a clear plan of what you really want to do. Hire a resume service and get down to work (job searching of course). Prepare to be turned down several times. Never give up. If you have other ideas, please share them through the comments section.

At the end of the day, if you are lucky to be interviewed, be honest because it is not morally upright to lie. It is easier to be caught lying. Do whatever it takes to be ready for that job because you never know when you will be meeting your next employer. With that in mind, happy April Fools Day! I am not fooling you at this point. Good luck and see you soon.

Friday, 21 February 2014

Android in layman point [ Android Architecture ]


The Android platform
  • Android platform is software stack
  • Supports mobile and tablet
  • It has many layers to support application to run.

The android architecture
  1. Application layer
  2. Application framework
  3. Libraries and DVM
  4. Linux kernel (provides generic OS services)

Linux kernel proves following services

  1. Security
  2. Memory & process management,
  3. File & network IO
  4. Device drivers to communicate with varies hardware
  5. Common OS services.

Android Linux kernel provides extra service other than Linux 
  1. Power management
  2. Android shared memory(ashm)
  3. Low memory killer
  4. Inter process communication (binder)

Libraries
  1. System C libraries System libraries written in C/C++ native Libraries
    • Bionic Libc
  2. Surface manager
    • Display management
  3. Media Framework
    • Audio/Video
  4. Webkit
    • Browser engine
  5. Open GL
    • Graphics Engines
  6. SQLite
    • Relation Database Engine

Android Runtime
  • Support writing and running android applications
  • Two components in android run time

Core Java Libraries


  • Android application written in Java programming language
  • Set of standard functionality are provided by library to write application.
    •  Basic Java classes – java.* javax.* (data structure, Ux, Concurrency, FILE IO)
    •  App Lifecycle – Android.*
    • Internet/Web service – ORG.Unit Testing – Junit.*

 Dalvik Virtual Machine

  • Software executes android application.
  • Android application written in JAVA which needs JAVA virtual machine to execute.
  • But Java virtual machine is too heavy to run on mobile platform it is made for Desktop
  •  So Android provides the optimized version of Java Virtual machine which runs on Mobile
   Typical Workflow of App Development
  1. Write application in java program (file.java)
  2. Java compiler compiles file.java to Java byte code files (file.class)
  3. Dx converts the Byte code files (file.class) to single dex byte code file (classes.dex)
  4. Dalvix executes the DEX byte code file to machine language 

Resource Constrained Environments
  • Slower CPU
  • Less RAM
  • Limited Battery Life

Application Framework

Package manager

-          Maintain the data base of all the installed applications

Window Manager

-          Manages many windows
-    System Notification
-    Main application window
-    Application Sub window

View System

-          Provides command user interface
-    Icons buttons, text box, label

Resource manager

-          Non compiled resources
-    Strings, graphics, layout files

Activity manager

-          Manages app life cycle and navigation support

Content Provider

-          Inter application data sharing.

Location Manager

-          Provides location and movement information

Notification Manager

-          Place information in notification bar (e.g. SMS, Missed Call, batter charging info)

Application Layer
  • Application like phone , contacts, launcher, SMS
Check out the next blog for setting up your android development environment...