Checklist For Xamarin Forms Development

Here’s a list to help you get started with cross-platform mobile app development using Xamarin Forms.

  1. Xamarin
  2. Visual Studio 2015
  3. Android SDK
  4. Windows 10 OS
    1. While you can work with Windows 8 as well, you will need Windows 10 operating system if you are going to develop for Windows 10 Universal App.
  5. Mac with Xcode and Xamarin installed
    1. Again this is not a mandatory to get started with Xamarin but without a Mac you will not be able to develop applications for iPhone.

If you have all the items on this list installed/setup then you are ready to get started with Xamarin Forms Development!

Upwork Sucks Big Time!

I am not much of a hater and I hardly say these kind of stuff about anyone (specially in public), but this time I have to make an exception.

Yes guys, like the title says:

UPWORK sucks !!

Yes, the freelancing site for freelancers, just sucks!


Ok the main reason for my hatred is this email that I got from them today:

Hello Sovit,

We are contacting you to let you know we have suspended your access to Upwork indefinitely.

Our decision is based on a careful review and the fact that you have submitted a high number of proposals for jobs on our site without many contracts or earnings. Unfortunately, this means the jobs posted by clients are not a good match for your skills.

I know this news is likely disappointing to you. But our goal at Upwork is to enable freelancers to successfully connect and collaborate with clients who need their skills and expertise. Unfortunately, this means we must part ways with freelancers whose skills are not in demand in our marketplace.

If you want to appeal this decision, you can email us at Please note each case will be manually reviewed by our Trust & Safety team to decide if your account can be reinstated.

Please know we don’t make decisions like these lightly and wish you the best of luck in your future endeavors.


Upwork Trust & Safety

At first when I saw the email, I just took it casually because to me Upwork had already lost its charm because of their high commission rate that they charge with Freelancers and almost close to impossible possibility of landing a job there because of the overly crowded competition.

But as I thought about the absurdity of their reason and unprofessional action taken from their side I just couldn’t take it.

First of all, Upwork has never stated any such policies regarding account getting suspended/deactivated. I have been using Upwork for over a year now and I haven’t seen any Disclaimers like this one.

If there were policies like this where too many proposals could lead to user being kicked out from Upwork, why did they have maximum number of allowed proposals to be 30 for a month? Does it make sense?

I mean on one hand they give freelancers to apply up to maximum of 30 jobs and on the other hand if they do, they get kicked out from the site?

Furthermore, given the amount of competition at Upwork to get any single project, freelancers are bound to apply to more than one project at once. Now if they aren’t lucky enough they are all surely to get their accounts deactivated isn’t it?

You don’t trust me?

Well, either you have never been to Upwork or you are probably the CEO at Upwork.

Anyways, why don’t you go ahead and read the comments from 449 other Freelancers (this number is as of today and probably is growing exponentially every minute) who are simply pissed with Upwork then you will know it for yourself. Here’s a link to a post by someone who completely agrees with me and have similar thoughts about Upwork and also have a growing number of complaints on the comments section for Upwork.


UPWORK sucks !!

And they better authorize me the payments for the work that I previously done at Upwork which I haven’t cashed yet.

Wonderful Opportunity for Software Engineers around the world

Are you ready to work as a SQL Developer?

A SQL Developer is responsible for managing data in a relational database. Database Providers like Microsoft, Oracle and MySql have their own IDE for managing data. For example Microsoft has SQL Server Management Studio for this purpose and Oracle has Oracle Developer Studio. A SQL Developer makes use of these IDEs for managing data.

Today I would like to list down the most common tasks that every SQL Developer must be familiar with as these will often come up as a requirement in the course of their day to day to work. This list will also serve as a guideline for anyone who wishes to advance their career towards becoming a SQL Developer.

In no particular order, here’s the list of tasks:

  1. Connecting to different SQL Servers using Windows and SQL Server Authentication.
  2. Creating  new databases in many different ways.
  3. Backing up and restoring databases.
  4. Designing and Normalizing Tables as per need.
  5. Using Primary Keys, Identity Columns and Foreign Keys for table creation.
  6. Altering Tables and Columns.
  7. Properly using Data Types and Column Size Limits.
  8. Writing basic to advanced level queries for SELECT, UPDATE, INSERT and DELETE.
  9. Writing table JOIN statements.
  10. Filtering Rows using WHERE clauses and JOIN statements.
  11. String manipulation using functions like Replace, Stuff, Trim and Substring.
  12. Creating tables on the fly.
  13. Using Cursors for looping.
  14. Writing Stored Procedures.
  15. Writing Functions.
  16. Writing Triggers.
  17. Using Linked Servers.
  18. Adding Indexes on tables.
  19. Using aggregator functions like Sum, Count, Group By, Order By, Row_Number and Distinct.
  20. Accessing table and column information across databases using Information_Schema.
  21. Generating Scripts to re-create database objects like tables and functions.
  22. Importing Data from external sources (mainly csv files sand excel sheets).
  23. Creating and authorizing  Database Users.

Note: Many of these tasks can be completed in two different ways i.e. either using the GUI or using Structured Query Language.

Using the GUI

Writing Queries

While it may be easier to operate through a User Interface for a newbie as he doesn’t have to remember the necessary queries, but on the long run it is better and also important to be fluent in performing these tasks writing queries.

Once you get the hang of it, you will find that writing query is more easier and faster than operating through UI as you no longer have to worry about where a particular function is located to perform a task. You just have to write the query on the query editor window.


The intention for this post was to identify the common operations that a SQL Developer must be fluent with in order to work in any professional environment. While this is not an an inclusive list of tasks and I may have left out a few other essential tasks, but nevertheless, if you are familiar with the tasks listed above, surely you can call yourself a SQL Developer ;).

Daily Reflection


Daily Reflection is designed to draw your attention towards internal movement within yourself.

A collection of thought provoking questions aimed to raise your level of awareness. Use this app daily towards the end of each day to reach to your contemplative state of mind.

Reflect daily upon these questions to bring more awareness in your life.

Download link:

A small android app to nudge you to raise your awareness level daily.icon


Getting File Content using GIT Hub API

The GIT Hub itself has a fairly complete tutorial for accessing GIT hub uploaded files.

However, I think it can still use some little extra explanation.

Make sure you get the following steps right for this:

  • Depending upon master/branch, get your URL for the repository ready first.
  • Next, get the correct header inserted into your HTTP request.
  • Make sure you are requesting data in ‘jsonp’ format
  • Extracting the content of your response can also get tricky. make sure to look into ‘data.contents’ value.
  • Finally, decode the encoded content.

Here’s my implementation API call:

var gitURL = '';
var gitAPIServiceOptions = {
url: gitURL + yourGitHubFilePath,
requestType: "GET",
dataType: "JSONP",
httpHeader: 'Accept',
callBack: function(result) {
if (result.success === true) {
var decodedResult = atob( ;


A Knight’s Watch

Recently I came across this interesting problem through Toptal (on Codility) which kept me thinking hard for a few days. Finally, I now have a solution to this problem and would like to share it here.


Basically, the problem deals with a knight piece on an infinite chess board. Assuming the knight is positioned at (0,0) you are asked to calculate and print the shortest path that the knight can take to get to the target location.


My Approach:

So what is given here?

  1. The Knight’s movement is well defined i.e. it can only move in a ‘L’ shape.
  2. The Knight has option to move to any of the 8 different locations from it’s current position.



Now with these key points in mind, we can calculate which move will take the Knight closest to the given target i.e. move the knight in the direction of shortest distance.

For example: Suppose our target is located at (6,7).


Now, from (0,0) the Knight can move to following points: (1,2), (2,1), (-1,2), (-2,1), (-1,-2), (-2,-1), (1,-2) and (2,-1).

But out of these 8 points, the closest one is (1,2). So we move the knight to this position in first move. For each step we can use the same logic to move the Knight.

Hence, the Knight moves to (1,2) in first step, (3,3) in second, (4,5) in third and (6,6) in fourth move.

However, once the Knight reaches a proximity distance of 1 unit, we will have to keep in mind a separate logic to hit the target.

This is because if we stick to our logic of moving the knight towards the shortest distance in all places, what will happen is once the knight reaches a close proximity, the Knight will start going round and round the target but never actually hit the target.

From (6,6), the Knight could jump to (7,8). From (7,8) it could jump to (5,7) and to (7,5) and all but never actually jump to (6,7).

So, we have to create a separate rule for this scenario for our Knight.

Close Proximity Rule:

There are again 8 different close proximity points from the target location’s view point : (7,7), (7,8), (6,8), (5,8), (5,7), (5,6), (6,6) and (7,6).

These eight points can be categorized into 2 types. Either they lie on the axes or they lie on the diagonals from the given target.

Points on Axes: (7,7), (6,8), (5,7) and (6,6)


Points on Diagonals: (7,8), (5,8), (5,6) and (7,6)


Based on these two types, the Knight can hit the target in either 2 or 3 moves.

If the Knight was at a point on the diagonal say (5,6), from there it can jump (7,5) and then to (6,7) in 2 two moves. All diagonal points can access the target in the center in two steps.

Similarly, all points on the x-y axes can hit the target in 3 steps. For example, if the Knight was at (6,6), it can jump to points (8,7), then to (7,9) and finally t (6,7).

Now with this much knowledge we can create a program that can calculate the shortest path that our Knight has to take to hit any target on an infinite chess board!

My Implementation:

I have created a console application in C# to calculate the shortest path for the Knight to reach any stated target point with the above mentioned logic.

The application/project is available in git hub @

Please feel free to like, share and comment.



7 Handy SQL Scripts for SQL Developers

Finally got my article published at Tuts+

I had written this article “7 Handy SQL Scripts for SQL Developers” referencing some of the common scripts that I most frequently use @ work. Some of these scripts were collected from different sites while some were developed by myself.


“A lot of things that we do depend upon the knowledge that we possess. If we are aware of what can be done, only then we can make smarter and more effective decisions. That is why it is always good to have quick tips and tricks handy in your pocket. This principle applies everywhere, including for MS-SQL developers.
Through this article I would like to share a few SQL scripts which have proven to be very useful for my daily job as a SQL developer. I’ll present a brief scenario about where each of these scripts can be used along with the scripts below. ……………………”

Read full article at:–cms-25834—————————————————

Do I want it?

Things to consider before adopting/neglecting a new technology.

– What is this thing? Or in other words, what can it do for me?

– Do I have any system already existing that is performing the same task as this new thing?

– Is it really better than what I have?

– Can I afford it? Not just in terms of money but also I wonder if I need to break up my existing system in order to implement this new technology.

– Do I want it?

– What is the best way to use this technology if I want it?