Sunday, May 2, 2021

How to select Zendesk ticket status?

Suppose you are employed by the CompanyX but working on CompanyY's support project using Zendesk.

So below table would help you to get an idea regarding the logic behind setting the Zendesk ticket status.

Ticket status should beWhen response/action required from
OpenAgents of CompanyY support team
PendingRequester or customer
On HoldCompanyY engineering team
SolvedNo one

You can set any of the above status while submitting a response or after updating the details in the ticket.

How to overcome proxy on command line?

​​Introducing Proxima, by which you can set proxy for that particular session of command-line window.

It authenticates command line program running over corporate proxy.

So this program can be used to set proxy over command-line that usually required on company's networks.

Although the session gets expired once you close the command-line window. 

As it is compatible to Windows 10, so follow these steps to setup/install.


  1. Unzip the zipped file
  2. Copy the proxima.bat file
  3. Paste it inside C:\Windows\System32 path


Here is the sample output for proxima help command

C:\Users\kumarab>proxima help
Proxima    ver 1.0
Copyright 2018 Abhishek Kumar. Licensed under GNU GPL v3.

 proxima [username] [password]

 proxima kumarab abc123
 proxima kumarab abc_123

 Avoid using @ or : in your password
 Using _ would be most suitable for password


Recording screen with VLC player on windows

If you are curious as to how you can start recording your screen using VLC here are the steps involved in finding the record option for your favorite shows.

1. Open up VLC media player and use the view tab to select the advanced controls that you will need to start the capture. Go down to the media tab and then click on the open capture device option. You can also press control + C with the media tab open to do this quickly for recording. This will open up the media dialog box.


2. From the media dialog box you can click the capture device to choose whether or not you would like to pick out capture from a webcam or from your desktop. Set the desktop as your desired capture mode and then you can simply pick out the ideal capture rate for your desktop device.


3. VLC will not automatically record audio or voice. Dou can add voices in the show more options menu however. Be sure when selecting your capture device that you also make an effort to choose the correct frame rate for your project. A standard frame rate could be 25-30 frames per second and the standard frame rate for capture is 10 frames per second on many screen captures. Up the frame rate if you would like smoother video but remember that this can take more processing power with recording.


4. When taking the show more options button you can add audio to play simultaneously along with the recording in the extra media tab. This is an ideal way to create a voiceover for a presentation with pre-recorded audio or to put your video to music.


5. Click on the convert dialog box and created a new profile.


6. This profile will help you to take your video codec options, encoding and the save file location for all of your screen recordings.


7. After setting up these options click save and then click on the start button which will appear at the bottom.


8. When you click the save button VLC will begin recording. You can also use the record and pause button to pause recording as well as the stop button to fully save your video and keep it in the save position you created earlier.


Transferring files via Suxm - micro web-server

Suxm is a micro web-server meant to serve locally and is very fast web-server that will make use of full capacity of your system. 

It is very useful in coding & development because you don't have to install any other static server apart from this; specially if you are working on any client-side app.

Download portable app

Install on Windows

  1. Download
  2. Unzip it
  3. Double click on setup.bat file
  4. Open command-prompt app & run suxm command to check if it is installed successfully

Install on macOS

  1. Download Suxm_macos_x86-64.tgz
  2. Unzip it
  3. Open Terminal app
  4. Go to the unzipped Suxm_macos_x86-64 folder
  5. Run command, sh
  6. Open another tab & run suxm command to check if it is installed successfully

Transfer file from MachineA to MachineB

Also, if you want to share some file from one system to another but all other ways of transfer are blocked that usually happens on corporate network; then you may try this app. 

Just follow these steps:

  1. Download and install suxm at MachineA
  2. Now run ipconfig command on terminal to determine MachineA IP address
  3. Run the suxm at the required folder on MachineA IP address and port 80; which could never be blocked by any network.
  4. Now note down the URL, it is serving at.
  5. Then access the same URL via MachineB browser.
  6. It would list down direct links of all the files of that MachineA's shared folder on MachineB browser.
  7. Now you may download the required file from those links.

Git Branching Models

In Git repository you can use branching models to define a branch workflow for repositories. When you map your workflow to repository branches with a branching model, admins can guide developers to name branches consistently by configuring which branch types to make available. There are a number of branch types available, and several branch types have default branch naming prefixes (described below). You can also specify your own naming convention for each branch type. A consistent naming convention makes it easier to identify branches by type.

Branch types

Bitbucket Server comes with several types of branches that are frequently used in software development. This section explains what each branch type is for, and has the typical naming convention for the prefix for each branch type. The prefix can be changed for each branch type.

Development branch

Usually the integration branch for feature work and is often the default branch or a named branch. For pull request workflows, the branch where new feature branches are targeted.


Production branch

Used for deploying a release. Branches from, and merges back into, the development branch. In a Gitflow-based workflow it is used to prepare for a new production release.


Feature branch

Used for specific feature work or improvements. Generally branch from, and merge back into, the development branch using pull requests.


Release branch

Used for release task and long-term maintenance versions. They branch from, and merge back into, the development branch. Merging into an older release branch can be configured to automatically merge to newer release branches, as well as the development branch.


Bugfix branch

Typically used to fix Release branches.


Hotfix branch

Used to quickly fix a Production branch without interrupting changes in the development branch. In a Gitflow-based workflow, changes are usually merged into the production and development branches.


Good to know:

  • New repositories will have the branching model enabled by default, and use the default branch prefixes.
  • Enabled branch types can't have empty prefixes, have a 30 character limit, and can't overlap (for example PROD and PRODUCT would overlap).

Quick troubleshooting steps for any web-portal

Most of the time, we face some issue while loading a web portal.

So here are few general purpose quick troubleshooting steps for any web-portal, which you may try
  1. Check console errors via Web Inspector
  2. Make a note of cookies stored for the webpage.
  3. Try clearing browser cache,
  4. Try relaunching the web page on new window.

Templates for JIRA

Fill required details in place of <> in the template

Filing JIRA

Use the below template while filing JIRA:

Lab info


<Server name> e.g., NA productions


<Server load> eg., CPaaS 2.1.4

<Browser with version> e.g., Chrome Version 72.0.3626.121(64-bit)


<Date and time in EST> e.g., March 17, 2019 8:10-8:25 PM EDT





Password: Test@123


<Mention all the steps in number bullet points>

Actual Result:


Expected result:



<Yes/No with comment> e.g., Yes, but with trial accounts only

End User Impact:

<Adequately assess the impact of this issue on end-user> e.g., It would heavily impact the performance of call under specified scenario


<occurance rate> say., 100%

Fault Isolation:

<If you know which module the fault is> otherwise say., None

Validating JIRAs

Steps to verify:

Login to server <Staging URL/Production URL> with account <email id/password>

<1. ...

... n.>

Narrate the clear steps to verify the JIRA

Expected results:

<> write clear notes on what should be the expected results aligning with Jira requirement. If you are not sure of the req, bring it to the discussion on JIRA itself.

Actual results:

<> say., works as expected, if not mention the actual result observed.

Date/Time of test:

<> Eg., March 26, 2019 10:30 AM EST.




Move the JIRA to “ TESTING DONE ” status if the test is a pass, Assign Jira to Project Admin.

If the test fails, keep the JIRA in ‘TESTING’ state and assign to Project Admin clarifying the requirement, Jeff may want to correct steps or take further action in redoing development changes. Repeat testing if required.

Summary of Zendesk legends and terminologies


Total solved tickets

Solved status indicates the agent has submitted a solution. So total number of tickets marked as Solved refers to total solved tickets within certain duration.

Solving a ticket and understanding how it is closed

Once you've resolved a requester's support issue, you change the ticket status to Solved, using the Submit button as described above. This should mean that you're done with the ticket and that the requester is satisfied with the resolution you provided. However, a requester can reopen the ticket after it has been set to Solved just by responding back and adding a new comment. For example, perhaps the requester disagrees that their support issue was resolved or that something new occurred that invalidates the fix.

After you set a ticket to Solved, the next status change is to Closed. However, you can't manually change a ticket to Closed; it is set to that status via a predefined business rule called an automation. An administrator creates automations and determines just how long tickets remain in the solved state before they are closed. If an administrator deactivates the automations that close tickets, the tickets will be closed automatically 28 days after they're solved. If you would like to manually change ticket to Closed, you can create a trigger as a workaround.

After a ticket's status has changed to Closed, the requester can no longer reopen it. They can, however, create a follow-up request that references the original, now closed, ticket. Agents can also create a follow-up for a closed ticket.

First reply time (FRT)

A metric that counts the number of minutes between the time a ticket is created, and the timestamp of the first public agent comment on that ticket.

How first reply time is calculated?

The Zendesk first reply time metric measures the time between ticket creation and the first public agent comment after that.

After the first public reply, Support stores the first reply time in calendar hours and calculates and stores the first reply time in business hours.

First reply time works the same regardless of the channel from which the ticket originates. For example:

  • A customer email creates a ticket. Timing starts when the ticket is created and ends at the first public agent comment.

  • An agent creates a ticket. Timing starts when the ticket is created and ends at the agent's next public comment.

  • An agent takes a phone call that creates a ticket and solves the ticket with no new comment. The customer later re-opens the ticket, and the agent then responds with a public comment. First reply time ends when that comment is posted.

Full resolution time

It is defined as the time between ticket creation time and the time of the final (or most recent) change of status to solved.

Scenario #1

If a ticket is solved once and then goes to Closed, the "Full Resolution" and "1st Resolution" times will be the same.

Scenario #2

If a ticket is solved, then reopened, and then solved again, the "1st Resolution" metric would show the time until it was solved initially, while "Full Resolution" would display the time until it was solved the 2nd time.

Free online Text to Speech converter

 I tried few free online tools and found this site for free text to speech conversion because it's generated audios looks quite close to actual voice.

So I tried "Thank you for calling A T and T. How may I help you?" as sample text, and got this audio file generated with Alice voice.

Another audio file with Daisy voice seems similar to Google's voice.

So I think we can use this tool to generate customised audio messages. Now we need to focus what messages we need to put.

Note: Try the text in phonetic form to make sure correct pronunciation.

Explained Zendesk Ticket Types

There are four values for type: Question, Incident, Problem, and Task. While the field can be blank initially (and through any number of updates), once you change the field to a specified type, you can't change it to blank again. Setting the type helps you to categorize your tickets, which you can then use in your workflow. For example, you can create views of tickets by their type.

Question is used to indicate that the requester's issue is a question rather than a problem that needs to be solved.

Incident is used for occurrences of a problem that affect more than one person. For example, if the wireless network in an office stops working, the problem will probably generate several support requests. Instead of handling each ticket separately, create one ticket describing the problem and set the type to Problem. Next, link the incident tickets to the problem ticket. When you solve the problem ticket, all of the linked incident tickets are solved too.

Problem is used to indicate that the requester is having an issue with your product or service that needs to be resolved.

Task is used when you want to assign the ticket as a task to a specific agent. When you select Task, you also set the Task Due Date which is 12pm in the account local timezone on the due date.

Explained Zendesk Ticket Status

There are six values for status: New, Open, Pending, On-hold, Solved, Closed. A ticket's status can be set and updated either manually by an agent or automatically via your business rules. A ticket's status cannot be changed to Closed manually however; that is handled automatically via your business rules.

New means that the request was received but that it has not been opened and has not been assigned to an agent. The New status can indicate that the support team is evaluating it to determine who should be assigned to resolve it. After changing the status from New to another status, you can't change the status back to New.

Open means that the request has been assigned to an agent who is working to resolve it. Once a ticket status changes to Open, it can never return to New. If your tickets are being created in the Open status instead of New, see Why is my New ticket being created in Open status? in our Support Tech notes.

Pending means that the assigned agent has a follow-up question for the requester. The agent may need more information about the support issue. Requests that are set to Pending typically remain that way until the requester responds and provides the information the agent needs to continue resolving the request.

On-hold means that the support request is awaiting a resolution from a third party—someone who is not a member of your support staff and does not have an agent account. This status is optional and must be added (see Adding the On-hold ticket status to your Zendesk in the Administrator Guide)

Solved means that the agent has resolved the support issue. Solved tickets are closed, typically, a number of days after they have been set to Solved (the exact number of days depends on how an Administrator set this up). Until a ticket is closed, the requester can reopen the ticket. For example, the requester may not agree with the agent that the support issue is resolved and reply back to the ticket solved email notification.

Closed means that the ticket is complete and can't be reopened. Requesters however can create follow-up requests for closed requests. 

How to take action at Zendesk tickets on-hold?

Suppose you are in the CompanyX and working on CompanyY's support project using Zendesk.

To find out what action you need to take over those on-hold tickets (Zendesk), please follow these steps

  1. Open each on-hold ticket one-by-one
  2. Look for the associated JIRA ID, because if it is on-hold then it must be waiting for response from 3rd party where in our case 3rd party is CompanyY's engineering team
  3. Watch the status of that JIRA ID
    1. If it is closed, then read the last comment and act accordingly
    2. It it is not closed, then skip it & move forward
  4. Add public reply / internal note based on comment & status of the associated JIRA

Creating a Github account for particular project/client

Suppose you are working in CompanyX and you have got project from CompanyY to work upon. Alternatively, it means CompanyY have outsourced a project to CompanyX.

Usually in these scenarios, CompanyY asks the CompanyX's team to create new GitHub accounts specifically dedicated to this project.

So in that case, it would be best practice to create accounts with common prefix which represents the CompanyY in some sense, where you may use short-form of project or CompanyY name, e.g., comy. The other part should represent the team members' name but should hide the identity of that person as well.

For this you may follow the steps given below for creating an account on Github, that would be dedicated to CompanyY

  1. Go to
  2. Register an account with the user-id, specifically made for CompanyY
    1. User id should be comy-first 2 characters of your firstname >< first 2 characters of your lastname >. e.g.,
      1. Peter Parker ⟶ comy-pepa
      2. Tony Stark ⟶ comy-tost
    2. Remember that you need to register the account with email address associated with your CompanyY account, in case you don't have it then you may use your CompanyX email address but as soon as you'll get the CompanyY account, replace it.
  3. Then, go to .
  4. Look for the required project, clone it at your system using Git command-line or Sourcetree app.
  5. After cloning the repository, you may begin to contribute but make sure with Admin whether you have necessary permissions.

GitFlow based branching strategy for your project repository

Branching strategy

We are following GitFlow as the branching strategy and for release management. You can install gitflow extension for your current git CLI from here.

The central repo holds two main branches with an infinite lifetime:

  • master
  • develop

The master branch at origin should be familiar to every Git user. Parallel to the master branch, another branch exists called develop.

We consider origin/master to be the main branch where the source code of HEAD always reflects a production-ready state.

We consider origin/develop to be the main branch where the source code of HEAD always reflects a state with the latest delivered development changes for the next release.

Supporting branches

Next to the main branches master and develop, our development model uses a variety of supporting branches to aid parallel development between team members.

The different types of branches we may use are:

  • Feature branches
  • Release branches
  • Hotfix branches


Fork the repository. Then, run:

git clone --recursive<username>/gitflow.git
cd <your repository>
git branch master origin/master
git flow init -d
git checkout develop
git flow feature start <your feature>

Then, do work and commit your changes. When your feature is completed, raise the pull-request against develop.

To know more about GitFlow, please refer

Coding conventions

Contributors should strictly follow these conventions:

  1. File names are in lowercase
  2. Id allocated to any html tags are in lowercase
  3. Variable names are in camelCase
  4. Class names are in PascalCase

Workflow for releasing projects at GitHub

This workflow will describe all the necessary steps that you need to follow to release a project.

It is targeted for those projects where more than one members are contributing in the project because that will require a standard workflow that will keep the quality in check at each level.

So try to follow the steps as mentioned below, where a repository have been taken for sample.

  1. First you need to setup the codebase on your local machine
    1. Create a clone of the repository
      1. git clone
    2. Get inside the repository folder
      1. cd sample-ios
    3. Refer this article GitFlow based branching strategy for your project repository to learn more about the gitflow mechanism of handling a project
    4. Enable git flow mechanism on the current repository
      1. git flow init -d
      2. It is required to be done by each contributor
    5. Checkout develop branch
      1. git checkout develop
    6. Copy & paste all the code in this folder from previous repo
    7. Update .gitignore file by adding file/folder name that you don't want to add in repo
    8. Stage all the relevant & required files
      1. git add .
    9. Commit the code with relevant message
      1. If you add issue number in you commit message like #1 Added initial codebase, then the commit would reflect under issue
    10. Push the committed code
      1. git push
  2. Once you have made a stable code base in develop branch then raise pull request to merge it in master branch.
  3. When your pull request will get approved, then either you or approver can merge the pull request to the master branch.
  4. Using gitflow you need to create release branch as
    1. git flow release start release-1.0.0
    2. test this code base to make sure everything is stable and releasable
    3. git flow release finish 'release-1.0.0'
  5. Then, go to
    1. Create new release
    2. Mention Tag version, e.g., v1.0.0
    3. Choose the Target branch as release-1.0.0
    4. Mention the Release title as Release v1.0.0
    5. Add the release notes in the Describe section that should contain all the relevant text in points like
      1. new features added
      2. bug fixed
      3. limitations if any
    6. Attach the binary files like installer exe, apk, app, etc.
    7. Click on Publish release button to make it public

Note: Although I have mentioned all the steps using command line but I'll recommend you to use Sourcetree app instead because it will provide a lot of ease while following the workflow.

How to validate USA address?

As the AT&T is using API to validate addresses in their input fields. So the right way to validate the address is to use the same API.

You can validate the address here, it will show the line info, city, state zip etc.

Zip in ATT portal is 5 digit only, unlike the new zip codes where block info is also added (the one you see after -.. ) is not available.

How to log hours in JIRA tickets?

Usually we need to log hours on the ticket we are working upon.

So please follow the below steps to do that.

Step 1

Click on More tab & select Log work.

Step 2

New popup appear like this

  1. Fill in Time Spent
  2. Fill in Date Started
  3. Fill in Work Description
  4. Click on Log button to submit

Step 3

Make sure you observe the change in right-hand-side Sidebar like this


  1. Once this section appear, you can open Work Log directly by clicking on the plus button.
  2. You can view your entries under Work Log tab beside Comment tab, which you can edit as well.
  3. You can also log hours for your past days also, in case you miss that.

Simple but effective Test report template

It would be easier for us to track the bugs or test scenarios that you found or tested, if you could present that in the form of table with pass/fail status and feedback/remark.

So you can make use of the below template for accumulating or sharing the test result.

Sr. No.

Test Scenario

Expected Result

Actual Result

Status (Pass/Fail)






How to record video via VLC player?

You can do easily by enabling the Record feature

  1. go to “View -> check “Advanced Controls”
  2. configure the playback speed you want
  3. press on the “Red dot” above the play controls to start recording
  4. press on “play” to start playback”
  5. press on the “Red dot” again any time you want to finish recording
  6. video will be recorded with the current playback speed and will be saved under “This PC/Videos/vlc-record-xxxxxxxx” for Windows 10
  7. if you want more control on converted/recorded video you can use

Reference: Robert Hopkins's answer to How do I save a video with a changed playback speed in VLC?

How to convert JIRA story into sub-task or defect?

Many times we entangled in the situation where we have made a story in JIRA but later on realised that it should have to be defect or in other case, sub-task of another story.

Story → Sub-task

So the workaround for converting the story into defect is given below:

  1. Open your story
  2. Click on more option
  3. Click on the Convert to sub-task option in the dropdown
  4. You would be asked to choose Parent story, so chose relevant story
  5. After submit, your story gets converted into sub-task

Story → Defect

Now if you want the story to be converted into defect, then you should first convert it into sub-task. Thereafter, you can convert that sub-task into defect as given below:

  1. Open the sub-task
  2. Click on more option
  3. Click on the Convert to issue option in the dropdown
  4. You would be asked to fill up relevant fields required for raising a defect, fill them up as required
  5. After submit, your sub-task gets converted into defect.

How to use Github repository in SSH mode?

It is preferred that you use SSH to check in code. You will need an SSH key associated with your GitHub account to do this. You can follow the guide created by GitHub, or the steps below.

The following steps are for MacOS. Follow the guide linked above for other operating systems.
  1. Generate an SSH private-public key pair. Open a terminal on your machine and enter
    • ssh-keygen -t rsa
  2. You will be asked where to save the key. The default (~/.ssh/id_rsa) will suffice.
  3. You will be asked for a secure passphrase. If you enter one, you will be asked for this phrase every time you commit changes. Be sure to remember it.
  4. Add the newly generated private key to your SSH agent. Use the following command.
    • ssh-add -K ~/.ssh/id_rsa
  5. Add the newly generated public key (~/.ssh/ to GitHub. Go to your account settings and select "SSH and GPG keys". Press "New SSH key".
  6. Give your key a meaningful title (i.e. your computer's name or "Work Laptop")
  7. Copy the public key. The easiest way to do this is with the following command. Alternatively you may open ~/.ssh/ with your favourite text editor and copy it.
    • pbcopy < ~/.ssh/
  8. Paste the key into the "Key" box. Press "Add SSH key".

How to change tomcat port number?

You can follow these steps to change Tomcat's port number
  1. Go to tomcatconf folder
  2. Edit server.xml
  3. Search "Connector port"
  4. Replace "8080" by your port number
  5. Restart tomcat server.

That's it!

Reference: java - How to change tomcat port number - Stack Overflow

How to do Inventory check via Material Tracker?

The Material Tracker is a web based application to manage inventory of a team, project or company.

Now, here is the process to do Inventory check using Material Tracker app

Step 1: Select Accounts tab

Step 2: Select a User from list that will open Account Details of that User, click on Issued button icon (highlighted in skyblue color) located at sidebar header

Step 3: You'll get the list of all the issued items to that User, click on Mail it button to send Inventory check mail to them

How to install Prettier extension in Visual Studio Code?

Prettier is an opinionated code formatter. It enforces a consistent style by parsing your code and re-printing it with its own rules that take the maximum line length into account, wrapping code when necessary.


Follow the steps mentioned below to install the Prettier extension in your Visual Studio Code (VSCode).

Steps to install Prettier in VSCode


Now to validate if Prettier is working, open any file that it supports like HTML, JavaScript, CSS, etc. and look for it's name at bottom right corner of the VSCode.

Sign of Prettier extension is loaded


To avoid conflicts of beautifiers, disable or uninstall any other beautifier extensions that supports the same file formats.

Preferred Prettier configuration for JavaScript/ECMAScript

For JavaScript based apps, 
  • The code must be formatted with the Prettier engine with the following configuration
    • prettierrc file (YAML)
      • arrowParens: avoid
      • bracketSpacing: true
      • insertPragma: false
      • jsxBracketSameLine: false
      • printWidth: 120
      • proseWrap: preserve
      • requirePragma: 'false'
      • semi: false
      • singleQuote: true
      • tabWidth: 2
      • trailingComma: none
      • useTabs: false
  • The code must be linted with the standardjs linter:
    • Recommend using prettier-eslint plus the appropriate plugins to get both standard and eslint processing done at the same time. Here is the configuration we use for prettier-eslint: .eslintrc.yml.
    • This will give you both prettier and standard configuration that adheres to the above.
  • Prefer simple functional style over class heavy designs

The best Full Page Screen Capture extension for Chrome

I have seen that you are sharing multiple screenshots of a single conversation because you conversation history is longer than screen height.

So to overcome this issue, there is very useful utility tool in the form of chrome extension that could capture whole page at once.

Please install this Chrome Extension for taking full page snapshot at once on click of a button. You can download the snapshot as pdf or png and share across.


Full Page Screen Capture - Chrome Web Store

Full Page Screen Capture extension is amazing! I am Chicago based award winning designer. I am doing market every day. Going deep is what make me create great value and results for my clients. Great part of that research is scanning the web pages. Before the "Full Page Screen Capture" it was a nightmare to scan hundreds of pages.

How to record screen using FFmpeg Batch software?

Usually we all might have noticed that it is always useful to record a video by capturing screen rather than showing or teaching the same thing again and again to different people.

With this we might have also faced lots of restrictions in installing the right tool.

Also when we search over Internet, it becomes difficult to find out the free and portable version of the software that won't get restricted over our official laptops.

So to overcome these issues I'm providing a great tool to record your screen along with / without audio.

It is FFmpeg Batch AV Converter which is actually using a open-source command-line tool FFmpeg.

So first download it from

Then unzip it inside Program Files directory or similar kind of directory where your other programs reside.

For example, I put it in Programs directory that I made for portable programs. 

Now go inside the FFBatch_2.1.5_Linux_Wine directory, select the FFBatch.exe file, make the shortcut of it and cut-paste it to dashboard.

Now to record the screen with audio

  1. Open the FFBatch app.
  2. Select relevant Presets from the dropdown as shown in snapshot.
  3. Then click on the Record screen button.
  4. Your screen is getting captured continuously after this point along with audio which gets captured from microphone.
  5. At last click on the red cross round button at the bottom to stop the recording. 

After this, a folder will automatically open where the recorded video is saved.

Note that this FFmpeg Batch program is not only to record screen but it can do lot more than that. Just explore it you may find it useful for converting media formats, cropping, editing the media further, etc.

How to correctly format README files?

The README files are generally made in markdown syntax which you can learn from these links

As markdown syntax is pretty much flexible, so many times same text renders in different way on various platforms.

This happens because most of the people make very common mistakes while creating the markdown files. Those mistakes may not get visible on their local editors but become clearly visible when the markdown file gets hosted on popular code repositories like Github, Bitbucket, Azure, etc.

So to overcome this issue it is recommended to use some kind of markdown linters which force creator to use standard syntax while making markdown files.

For the same purpose, I have found quite impressive linter that we should use. So to use it, you can copy the content of README file into then see the lint errors and resolve all of them. That would make your README pretty readable to users.

Note: The textlint - playground can be found at where textlint is a pluggable and configurable linter tool for Natural Language. Maintain your text quality with ease.

Apart from this you can follow few common rules while creating markdown file as given below:

1. Change the title to repository name rather.
  • For example, change # SMS Starter Example to projectx-sample-sms-java.
2. Indent all the lines properly 
3. Always leave one line gap before & after code block. Avoid this
4. Do not put the underline below heading. Avoid this
5. Try to adjust the look via various headings in sequence.
  1. Start with # that refers to <h1> as main title of the doc
  2. Then make next heading as ## which refers to <h2>
  3. Make subsequent sub-headings by increasing the number of # (it can go at max upto h6)
6. Leave a line gap after heading. Avoid this

How to write git commit message like a pro?

Usually most of the people write vague commit messages in their git repository. So let me give you a way by which you can write a commit message like a pro.

First of all, you need to think about the changes you have made in the repository. Then you'll get 3 questions:
  1. What changes have been made?
  2. Where those changes have been made?
  3. Why have you made those changes?

Now, let's see each one.


This refers to the actual code changes but each commit shows those changes by default in git repository. So we don't need to describe it.


This refers to the file in which code changed but each commit also show the list of updated files in git repository. So we don't need to describe it.


This refers to the reason due to which we have changed the code which can't be explained by git repository. So we should always need to describe it.


We don't need to describe what changed or where changed but why changed.

How to link commit message with JIRA ticket?

Always prefix your commit message with your JIRA ID for tracking purpose, no matter if you are committing in the feature branch or not.


JIRA-ID: Your commit message will come here

Figure 1: Template for commit message


KAT-108: Added screen-share module
This is required because when you merge the feature branch in develop then the all commits gets listed together and it would become difficult to identify the change and which JIRA ID it is associated with.


If you divert from the template then avoid any character prefixed in the JIRA ID otherwise it becomes un-relatable to JIRA, for e.g.,
  • JIRA can not recognise to relate it with associated JIRA ID, if used like these
    • #AFC-241 ⟶ incorrect
    • $AFC-241 ⟶ incorrect
    • AFC_241 ⟶ incorrect
    • AFC241 ⟶ incorrect
    • AFC-241 ⟶ correct

The '', an alternative of 'ngrok'

What is ngrok?

ngrok is a cross-platform application that enables developers to expose a local development server to the Internet with minimal effort. The software makes your locally-hosted web server appear to be hosted on a subdomain of, meaning that no public IP or domain name on the local machine is needed.

Problem with ngrok

Usually ngrok CLI tool and URL are blocked on corporate systems.

Although there are many alternatives of ngrok but all of them requires their specific CLI tool to be downloaded but those fails to pass through corporate network.

Most suitable alternative of ngrok

Now we have got as the best alternative of ngrok because of no specific CLI tool is required to be downloaded.

How to setup

To setup you need to generate SSH key and add it to the ssh-agent.

Follow this article, Generating a new SSH key and adding it to the ssh-agent to do that.

How to use

Open the folder which you want to serve.

Run any preferred static-server on that folder at port 8080. Otherwise you may use

After that, run this command:

ssh -R 80:localhost:8080

It would create a subdomain like, where you could find the same content which is being served at localhost:8080.