• Twitter
  • Facebook
  • Google+
  • Instagram

About me

Let me introduce myself

A bit about me

I am a self starter and ambitious about learning new technologies deeply and thoroughly. I have 6+ Years of Mobile Application Development Experience for Android and iOS platforms.

profile for Salman Khakwani at Stack Overflow, Q&A for professional and enthusiast programmers


Salman Khakwni

Personal info

Salman Khakwani

Phone number: +(92) 343 201 2045
E-mail: me@salmankhakwani.com

Skills & Things about me

Mobile Developer
Problem Solving


My latest posts

Coping up with Nystagmus

Image Credits: https://parenting.firstcry.com/articles/congenital-nystagmus-causes-signs-and-treatment/
Image Credits: https://parenting.firstcry.com/articles/congenital-nystagmus-causes-signs-and-treatment/

Nystagmus is a condition in which the eyes make repetitive, uncontrolled movements. Coping with nystagmus can be challenging, but several strategies can help.

  • Vision therapy: Vision therapy is a type of rehabilitation that can help improve eye coordination and control.
  • Glasses or contact lenses: Some people with nystagmus benefit from wearing glasses or contact lenses to help correct any underlying vision problems.
  • Surgery: Surgery may be an option for some people with nystagmus. Surgery can be used to improve eye alignment or to weaken the muscles that are causing the eyes to move.
  • Assistive devices: Assistive devices such as video magnifiers or closed-circuit television (CCTV) can help people with nystagmus to read and see more clearly.
  • Emotional support: Living with a chronic condition can be difficult, so it is important to have emotional support from family and friends or professional support from a counselor or therapist.

It's important to remember that everyone's experience with nystagmus is unique, and what works for one person may not work for another. It's important to work closely with an eye doctor and other healthcare professionals to find the best coping strategies for you.

Being Naive in Corporate World

Image Credits: https://theweek.com/articles/545862/why-naive-expect-corporations-nice-workers
Image Credits: https://theweek.com/articles/545862/why-naive-expect-corporations-nice-workers

Being naive in the corporate world can refer to a lack of experience or knowledge in a particular industry or field, as well as the inner workings of a company. This can make it challenging for a new or entry-level employee to navigate the corporate culture and politics.

However, it is important to remember that being naive in the corporate world does not mean that an individual is not capable or competent. It simply means that they may need more time to gain knowledge and experience. It's important to be open to learning and take advantage of opportunities for professional development. Building a strong network of mentors and colleagues can also be beneficial in navigating the corporate world.

Being naive in the corporate world can also mean being trusting and optimistic, which can be a positive trait in a workplace. It's important to be positive and trust people, but also to be aware of the potential downsides such as being taken advantage of by others, being misled, or being unable to make informed decisions. It's important to be aware of these potential downsides, while still promoting the positive aspects of being open to learning and growth.

It's also important to note that being naive in the corporate world can also be a disadvantage when it comes to negotiations, business deals, and other high-stakes situations. In such cases, having knowledge and experience can be extremely valuable, and it's important to be aware of one's limitations and seek advice and mentorship when needed.

Conclusively, being naive in the corporate world can be a challenge, but it is not a hindrance to success. It's important to be open to learning and growth and to build a strong network of mentors and colleagues to help navigate the corporate landscape. It's also important to be aware of one's own limitations and seek advice and mentorship when needed, while still promoting the positive aspects of being open to learning and growth.

Easy Xcode 10 Shortcuts

A route that is more direct than the usual route, or a quicker way of doing something
Using shortcuts while working with any tool (development, designing, etc) plays a vital role in doing a normal chore at relatively faster pace. Therefore, today we are going to take a look at the Xcode 10 shortcuts.

Here is a list of some common symbols:
  • Cmd — ⌘
  • Shift — ⇧
  • Caps Lock — ⇪
  • Option or Alt — ⌥
  • Ctrl — ⌃
Without wasting anymore time, let's jump directly into the Xcode 10 shortcuts:
Cmd + Opt + Ctrl + U
 For running current test
Opt + Cmd + N
For creating a new group
Cmd + Shift + O
For quickly opening, or for going to particular line of file
Ctrl + Cmd + Opt + F
For automatically fixing issues
Cmd + Shift + J
For selecting file in navigator
Cmd + Shift + D
For selecting file in debug view
Cmd + \ 
For adding breakpoint
Cmd + . 
For detaching simulator from Xcode
Ctrl + Shift + Up/Down 
For using multiCursor editing
Cmd + , —> 
For opening Preferences
Ctrl + L
Center the current line to adjust screen position
Cmd + Opt + [ ] 
For moving line up/down
Cmd + + —> 
For making text bigger in editor
Cmd + — ->
For making text smaller in editor
Cmd + Ctrl + 0 
For resetting text size
Ctrl + Shift + Left arrow Key 
For selecting word one by one towards left (dividing camel case word and then selecting it)
Ctrl + Shift + Right arrow Key 
For selecting word one by one towards right
Opt + Shift + Left arrow Key
For selecting word one by one towards left
Opt + Shift + Right arrow Key 
For selecting word one by one towards right
Cmd + Shift + Left/Right arrow Key
For navigating to the end of line
Cmd + Shift + L 
For opening code snippets
Cmd + Y 
For activating/deactivating a breakpoint
Cmd + K 
For clearing console
Cmd + Shift + K 
For cleaning project
Ctrl + K 
For deleting current line
Cmd + J 
For moving Focus
Cmd + Shift + 0
For opening documentation
Ctrl + 6 
For opening jump menu
Cmd + Shift + Y 
For showing/hiding Debug region
Cmd + Ctrl + E 
For editing all within scope
Ctrl + space 
For showing intellisense code completions
Ctrl + . 
For showing next suggestion
Cmd + / 
For commenting a selection
Cmd + U 
For running all tests
Cmd + Shift + U 
For running tests in current test suite
Cmd + Opt + Ctrl + G 
For testing again
Ctrl + Cmd + ‘  
For auto fixing next error
Ctrl + Cmd + “  
For auto fixing previous error
Cmd + Opt + U 
For opening scheme’s test settings
Cmd + Opt + R 
For opening scheme’s run settings

I hope that these shortcuts help, thanks.

How to Rename a Local Branch Using Git

Naming a git branch incorrectly and pushing it to the origin happens often during continuous integration. Fortunately, there is a way to rename the existing branch without losing all your precious commits. You can use the following steps for successfully renaming the git branch:

1. Renaming Local Branch:
In case you are on the same branch, then use the following git command.
>git branch -m new-branch-name

In case you are on the another branch, then use the following git command.
git branch -m old-branch-name new-branch-name

2. Delete the old-branch-name remote branch and push the new-branch-name local branch:
git push origin :old-branch-name new-branch-name

3. Reset the upstream branch for the new-branch-name local branch:
Move to the branch and then, enter the following command
git push origin -u new-branch-name

Note: Please don't forget to pull the latest code before making any changes.

Keeping Entire Package Using Proguard

Keeping Entire Package Using Proguard

Pro-guard was released in 2002 and since it's first public release it has been downloaded over tens of  millions times by more than one million developers. Pro-guard is mainly used for obfuscating applications. Also, shrinking the unused code and optimization of the Java byte-code is catered by Pro-guard. Since, Android uses Dalvik byte code, some optimizations doesn't work well.

There are always some scenarios, in which, we need to keep some of our packages from being obfuscated by Pro-guard. The most popular scenario is when we are using GSON and we have got models (POJO) that are used by GSON library. In this post we are going to dig into the ways of keeping entire packages from Pro-guard.

There are several ways of achieving this, we will look into them one by one.
1. Keeping names of public classes:
-keep public class com.salmankhakwani.application.network.gson.models.*

2. Keeping names of public classes for packages and sub-packages:
-keep public class com.salmankhakwani.application.network.gson.models.**

3. Keeping names of public/protected/private classes/methods/fields for packages and sub-packages:
-keep public class com.salmankhakwani.application.network.gson.models.** {
  public protected private *;

I hope this helps anyone who got into similar scenario of keeping packages from Pro-guard.

Freelancing Heaven

I have been working as a mobile application developer for the last 3+ years. I have worked on a range of applications including video editing, image processing, drawing & annotations, document manipulation and simple web-service consuming client applications. I have worked both independently and with in a team, it has been always my first priority to deliver an application that is bug free on the agreed time and I always try to give my 100% for that.

My favorite programming language is Java and I have worked on Android and iOS mobile platforms. Prior to working as a mobile application software developer professionally, i used to work as a part time freelancer on Elance along with my University studies and I did pretty well on Elance with a 5.0 average rating.

Recently my interests are grown again into working as a freelancer and I have been doing research in finding the best freelancing platform available. My search ended when i stumble upon Toptal.com, it has everything that makes a freelancing website perfect. Here are some of my findings that I want to share with you about Toptal.

Elite Community of Freelancers:
Toptal has a community of best freelancers available for hire, they have a bullet-proof screening test to identify the best engineers. Only 3% of the applications among thousands are accepted from thousands of Applications received by Toptal.

Long-term Working opportunities:
With my experience I felt that It is hard to find long-term projects on other freelancing websites because most of the work posted there low paying and short-term. While on the other side of horizon there is Toptal, which promises to provide long-term projects with competitive salary. Once you get selected you also get to work with Toptal's prestigious clients such as J.P.Morgan, Airbnb, Zendesk, etc.

My interview process with Toptal has just begun and I would really like to get in and become one of the freelancers in their community. If you are a Software Developer/Engineer, then i would recommend you to do the same.


Get in touch with me

Email adress


Phone number

+(92) 343 201 2045