Biggest Lie About India IT Companies

Exposing False Belief About India IT Companies

With the advent of the new millennium, we saw a huge boom in the IT sector and the time has come the IT industry is arguably the largest employer in this world.

Each day is bringing a new dimension to our knowledge and we are challenging ourselves to create newer technology each day.  But where so much money and growth is involved we also need to do a bit of analysis and question ourselves. So the big question is

Initially in the early 2000s when the IT industry came in with lucrative pay packages and beautiful campuses were Show Off. Students and youth flocked to the big Indian giants like Infosys, Wipro, TCS, etc.The resultant was a big mushroom farm of engineering colleges.

How To Get a White Collar Job is the Biggest Concern:-

The most vulnerable part of our family is Parent’s because they are a much more caring person than anyone else in the world.

Everybody wanted their son to be an engineer hence most parents started pushing their child to get that white-collar-job.Colleges kept on producing ill-trained graduates who barely know a thing as to how things work in the industry.

The students are piped into the MNC’s. The situation was a win-win for both the parties, the MNC’s got their bench strength and the typical middle-class minds got their child a white-collar job

But let’s question ourselves is this sustainable?

With the global population increasing by leaps and bounds each day. Is this model sustainable?

Well, the answer is NO a big NO. The cumulative hiring of hundreds and thousands of engineers each year has eventually led to a lot of evident and imminent problems.

  1. Low job satisfaction.
  2. Poor hike in the annual package.
  3. No significance in the company
  4. And eventually a degrading morale.

Among this big number games, we have forgotten our first question i.e. “Have we innovated enough?”. Let me Know what do you think?

Well, to me! The answer is to some extent a big No, a complete failure.


Well here is the explanation. The whole concept of this campus hiring and providing jobs to freshers was a big hoax. I mean how can you hire somebody who has studied all his graduation to learn how bridges are built and eventually put him in front of a box to write some exceptionally performing codes.

Can he? Well practically no. He will try his best to fit himself in and eventually after a kluge of a jostle , the poor guy would learn to copy and paste some shit which has been passed on to him by somebody else, without evaluating and without even understanding it.

Most of the employees working on the big Campuses with beautiful flowers and fountains, if evaluated properly, as to how much they know about concepts of programming, then perhaps a lions share would miserably fail. 

We are just busy passing on the knowledge to the next breed with nothing new in it. Most love spending their time in the office coz it allows them to have free coffee, free occasional booze, an illusion of being rich, a lot of free time and some extra activities like Table tennis, etc.

Are the great Indian talent to rot and drained down through this fountain

of Big MNCs? Well, its for the readers to analyze.

The above question raised has helped some great leaders to emerge in the past decade to name a few – Sachin Bansal, Jack Ma, Jeff Bezos, Elon Musk, and the list is endless. These leaders had the audacity to challenge the big MNCs and become the torchbearers of the next era – the era of startups. Not only do startups come with the challenges that one needs in life but also tests the capabilities of an engineer. Innovation is their survival strategy, not a USP. Your learning curve increases. Youths are leaving MNCs for the smaller organization for the sake of Job satisfaction and other reasons already mentioned.

The big IT giants who have caused such nuisance because of their greed and monopoly need to understand that the growth they are eyeing is perhaps not a very healthy one. The way, they operate they have serious issues and are creating a more of insecurity and a feeling of intellectual bondage.

I mean let us just think for some time how many inventions or rather new technologies have been given by our big multi-million Indian IT companies.

Do they have something to put on the table when it Google comes up something extremely cool every year?

Or do they have something to muscle with Apple Inc?

The growth of Indian IT industry can be healthy if the startups and the bigger MNCs understanding that the ultimate goal of IT is not to produce massive or high optimized code but to make this world better place.

We need to move ahead of digitizing the passport system. It’s not an achievement it’s just a mere correction of the age-old paper system.

“Are we as an IT professional happy about life?

Are we happy about the state of IT industry?”

Well, a deep silence is what we get. The reason is the companies do not focus on employee recreation and employee satisfaction. Both the startups and big giants are more focussed on numbers timelines but not on talent enhancements.

If the talents in the organization do not evolve technologically then the numbers are soon gonna fade and the company would not fare well.

Conclusion :-

We as a professional need to understand that the time has come for a Paradigm shift. where the interests of the society are changing with each day and are becoming more challenging.

We need to create a balance between satisfaction and growth. Both the education system and the Industry need to hold each other’s hand so that we change the existing scenarios.

We need to revamp the whole system and the way it operates. Is it possible?

Well, it just needs a start and a Frugalis Mind.

Note: -My Intention is not to Hurt sentiment of any MNC or a Person, It finally depends on you how You perceive.It’s just my thoughts and concern.

Written By – KG


Get Current Location Android -No GPS and Internet

Get Current Location Android -No GPS and Internet:-

Get Current Location Android – No Gps and Internet, There are different ways by which we can get users current location in android.Get Current Location Android no GPS and Internet, we are using   FusedLocationProviderClient . Its a battery efficient API introduced by Google.Using devices multiple sensors in a best possible way to is the ideal advantage of this API.Let’s go ahead and start .

Create Project:
Go to File->Create New project . Then add a location-based play-services-location dependency in your app.gradle .

dependencies {
  compile fileTree(dir: 'libs', include: ['*.jar'])
  androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'

  compile 'com.android.support:design:25.3.1'
  compile 'com.android.support:appcompat-v7:25.3.1'
  compile 'com.android.support.constraint:constraint-layout:1.0.2'
  compile 'com.google.android.gms:play-services-location:11.0.0'


Create activity_main.xml:-

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:textIsSelectable="true" />

    android:textIsSelectable="true" />



Update manifest.xml with following permissions:-

We need users permission to access users device and the permissions are of two types .We are taking both permissions.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

    <activity android:name=".MainActivity">
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />



Now Add the following piece of Code in MainActivity.java


Once user permission is given we get device location and show on UI.But if a user rejects the app asking permisiions we again re-prompt user to provide permission. Now if the user selects checkbox Do not Ask again then we redirect the user to app settings page and let him provide permission.

package com.example.sanju.locationexamplew;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Location;
import android.net.Uri;
import android.provider.Settings;
import android.support.annotation.NonNull;
import android.support.design.widget.Snackbar;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;

import java.util.Locale;

public class MainActivity extends AppCompatActivity {

  protected Location mLastLocation;

  private String mLatitudeLabel;
  private String mLongitudeLabel;
  private TextView mLatitudeText;
  private TextView mLongitudeText;
  private FusedLocationProviderClient mFusedLocationClient;

  private static final String TAG = MainActivity.class.getSimpleName();

  private static final int REQUEST_PERMISSIONS_REQUEST_CODE = 34;

  protected void onCreate(Bundle savedInstanceState) {

    mLatitudeLabel = "latitude";
    mLongitudeLabel = "longitude";
    mLatitudeText = (TextView) findViewById((R.id.latitude_text));
    mLongitudeText = (TextView) findViewById((R.id.longitude_text));

    mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);


  public void onStart() {

    if (!checkPermissions()) {
    } else {

  public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                         @NonNull int[] grantResults) {
    Log.i(TAG, "onRequestPermissionResult");
      if (grantResults.length <= 0) {
        // If user interaction was interrupted, the permission request is cancelled and you
        // receive empty arrays.
        Log.i(TAG, "User interaction was cancelled.");
      } else if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
        // Permission granted.
      } else {
        // Permission denied.

        // Notify the user via a SnackBar that they have rejected a core permission for the
        // app, which makes the Activity useless. In a real app, core permissions would
        // typically be best requested during a welcome-screen flow.

        // Additionally, it is important to remember that a permission might have been
        // rejected without asking the user for permission (device policy or "Never ask
        // again" prompts). Therefore, a user interface affordance is typically implemented
        // when permissions are denied. Otherwise, your app could appear unresponsive to
        // touches or interactions which have required permissions.
        showSnackbar(R.string.textwarn, R.string.settings,
          new View.OnClickListener() {
            public void onClick(View view) {
              // Build intent that displays the App settings screen.
              Intent intent = new Intent();
              Uri uri = Uri.fromParts("package",
                BuildConfig.APPLICATION_ID, null);

  private void showSnackbar(final int mainTextStringId, final int actionStringId,
                            View.OnClickListener listener) {
      .setAction(getString(actionStringId), listener).show();

  private boolean checkPermissions() {
    int permissionState = ActivityCompat.checkSelfPermission(this,
    return permissionState == PackageManager.PERMISSION_GRANTED;

  private void startLocationPermissionRequest() {
      new String[]{Manifest.permission.ACCESS_FINE_LOCATION},

  private void requestPermissions() {
    boolean shouldProvideRationale =

    // Provide an additional rationale to the user. This would happen if the user denied the
    // request previously, but didn't check the "Don't ask again" checkbox.
    if (shouldProvideRationale) {
      Log.i(TAG, "Displaying permission rationale to provide additional context.");

      showSnackbar(R.string.textwarn, android.R.string.ok,
        new View.OnClickListener() {
          public void onClick(View view) {
            // Request permission

    } else {
      Log.i(TAG, "Requesting permission");
      // Request permission. It's possible this can be auto answered if device policy
      // sets the permission in a given state or the user denied the permission
      // previously and checked "Never ask again".

  private void getLastLocation() {
      .addOnCompleteListener(this, new OnCompleteListener<Location>() {
        public void onComplete(@NonNull Task<Location> task) {
          if (task.isSuccessful() && task.getResult() != null) {
            mLastLocation = task.getResult();

            mLatitudeText.setText(String.format(Locale.ENGLISH, "%s: %f",
            mLongitudeText.setText(String.format(Locale.ENGLISH, "%s: %f",
          } else {
            Log.w(TAG, "getLastLocation:exception", task.getException());




Download Source Code


Deploy React JS in Tomcat

Spring Boot Jersey Example

MVC OR MVVM – Take Your Pick

MVC OR MVVM – Take Your Pick

The architecture of an application is the most important thing when building the application coz the choice you make ensures how flexible is your application and how easy is to build, modify and test it while ensuring that the performance is intact. We being a developer always confused about MVC or MVVM – Take Your pick.


MVC as we all know stands for Model View Controller is a very popular choice when it comes to the question of designing the architecture of the project. Before we go into the comparison and analyse of the pros and cons of both the architecture.

First let’s understand what are these two terms in layman words:

  1. MVC(Model View Controller): let’s assume an application to be a store. So first of all the view of an application is like the showroom where all the goods are in display, i.e all the interaction with the customer s take apace at the showroom level or the view level. Next, the controller is the salesman who interacts with the customer, heeds the needs and fetches them from their storage or the godown. The model is the godown where employees are working to fetch the required goods, manage it and hand it over to the salesman or the controller so that it can be handed over to the customer or the user.

Here the goods or the commodities are the program data.

The whole idea behind implementing the architectures are to add simplicity and tenacity to the application so that any modification in the application can be facilitated without disrupting the entire program of the application. In practise different types of MVC are used but we are not going into that. The above explanation may be over simplification of a huge topic such as MVC but the above description may be enough to get an idea as to what it is.

  1. MVVM (Model View View Model) :

    is an architectural pattern used in software engineering that originated from Microsoft. It is a derivative of the traditional MVC with the difference that the Controller layer is replaced with a layer which is a combination of both Model and View.  This type of architecture is super popular and perhaps tailor made when it comes to mobile application building. The main idea behind this is to separate business logic from its view (user interface). This enables designers and programming to work on a solution without conflict. Information is bound to views but no calculations or logic is found in the views. Making it cleaner and much easier to maintain. Here the model is dragged down to represent only the presentation level data that can be displayed. This is very helpful with the interactivity and the features of the application increasing each day dynamically. Some of the framework that support MVVM are  : Angular JS , Rails for Ruby,Xamarin, Silverlight,etc

Advantages of MVC :

  1. The MVC pattern is simple and makes it easier to test applications and manage their complexity by dividing the applications into the model, the view and the controller.
  2. The MVC framework is ideal for developers who want full control over the behaviour of an application, as it does not use view state or server-based forms.
  3. Due to the fact that it does not have support for view state, there will not be any automatic state management, reducing the page size, which allows for better performance.

Advantages of MVVM :

  1. Here the model does not know anything about the view or any other parts of the program as its interaction is limited to view model layer. The view is dumbed down and has no role except to present data and its interaction is limited to the view model layer.

1.This pattern is pretty good because you can test your view models.

  1. Developers can create unit tests for the view model and the model without using the view and the unit tests can exercise exactly the same functionality as used by the view.
  2. The MVVM pattern provides two-way communication between the pattern parts, whereas MVC is able only to provide one-way communication.

4.That testability from MVC would have 30%, with MVVM you could get to 70% and you could have UI tests for the rest.

Some other Names:

Viper: This architecture are basically targeted towards the mobile platform. The word VIPER is a backronym for View, Interactor, Presenter, Entity, and Routing. Clean Architecture divides an app’s logical structure into distinct layers of responsibility. This makes it easier to isolate dependencies (e.g. your database) and to test the interactions at the boundaries between layers:. It helps to target the problem of Massive View Controller problem in the iOS application where the view controller ends up doing a lot of stuffs. ensuring the VIPER architecture the developers can slimmer the chances of massive view controllers.

Main Parts of VIPER

         View: displays what it is told to by the Presenter and relays user input back to the Presenter.

                  Interactor: contains the business logic as specified by a use case.

                  Presenter: contains view logic for preparing content for display (as received from the Interactor) and for reacting to user inputs (by requesting new data from the Interactor).

Entity:- It contains basic model objects used by the Interactor.

                  Routing: contains navigation logic for describing which screens are shown in which order.


The choice of the architecture is totally dependent on the developer but a good analysis of the project especially its requirements is essential. We will cover more topics related to the project architecture and performance enrichments of applications. Till then keep following our blog at Frugalis Minds


Related Posts :-

Spring Boot Profiling – Configure for Different Environments

Custom ClassLoaders In Java

Java Class Loaders and Internal Working