Friday, 27 June 2014

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...




Tuesday, 4 February 2014

Setting up the torrent client on Ubuntu/Raspberry pi

In this post, I will show you how to setup transmission torrent client in your Ubuntu/Raspberry pi

What is Bittorrent?

BitTorrent is a protocol used for peer-to-peer file sharing that is used to distribute large amount of data over the internet. It means that the torrent client can download the data from the nearest peer instead of getting the data from a single source server. It can be used to reduce the server and network impact of distributing large files. It can work over networks with lower bandwidth.


Execute the below comments

 Install transmission torrent client

$> sudo apt-get update
$> sudo apt-get install transmission-daemon -y

 

After successful installation stop the transmission-daemon 


$>  sudo service transmission-daemon stop


  
Configure the torrent client by modifyint the settings.json file

$> sudo vim /etc/transmission-daemon/settings.json


  

Modify the below value in the settings.json file

            => "rpc-authentication-required": false
            => "rpc-whitelist": "127.0.0.1, 192.168.0.*"
            => "rpc-port": 9091
            => "rpc-url": "/transmission/"

  



 Start the transmission-daemon.

$> sudo service transmission-daemon start





Open the web browser type the below URL

<Your Machine IP>:9091/transmission/web/
Eg. 192.168.0.20:9091/transmission/web/


  


Upload the torrent file or URL to download torrent content

Friday, 24 January 2014

Enable ssh server on Ubuntu

In this post, I will show you how to install and enable ssh on Ubuntu

What is the use of SSH?

Let consider your Ubuntu machine is connected to your home WiFi router. Now you want to access the Ubuntu terminal in your Windows machine which is also connected to WiFi router.

By default in Ubuntu SSH server is not installed. So you have to install the openssh package. Once you install the openssh package it automatically enables the ssh server on your Ubuntu machine.

Execute the below comments


Install the openssh package

$ sudo apt-get install openssh-server -y


 

After successful installation restart the ssh service 


$ sudo /etc/init.d/ssh restart




If you want to change the default settings, such as the default port. edit the /etc/ssh/sshd_config file:

$ sudo vim /etc/sshsshd_config




To check the ssh, go to your windows machine run putty.exe


Connect to your Ubuntu machine through ssh.