Monitoring with Prometheus and Grafana

Posted on June 22, 2022 by in General

What is Prometheus?

Prometheus is a monitoring tool which was created to monitor highly dynamic container environments like Kubernetes, Docker swarm etc. It can also be used to monitor bare server where applications are directly deployed.

Prometheus working.

Prometheus collects and stores its metrics as time series data, i.e. metrics information is stored with the timestamp at which it was recorded, alongside optional key-value pairs called labels.

More info on data model of metrics:

Prometheus pulls metric data, stores metrics data in a time series database which is stored in local, it then accepts queries called PromQL.

Architecture diagram

Components of monitoring with prometheus

1. Target: A machine, application server, microservice, containers, log services etc. We will monitor our own machine in the example.
2. Prometheus server
3. Exporter: Each target will have an exporter which exposes an end point like localhost:3030/metrics . The end point is /metrics .

Prometheus pulls the metrics from this URL. For our example since we are monitoring our machine we will use node exporter . For windows we have windows exporter.

Prometheus has a long list of exporters available for different targets:

Once we have metrics being collected by prometheus we will use Grafana. Prometheus lacks a good visualization tool, hence we will use grafana.


We can do all the setup using dockers or can directly install/run on our machine.

Step 1: Install prometheus

Download the archive file for your system.

Prometheus already has a default configuration file called prometheus.yaml .

Open the file it should have three parts to it with explanation.

As you have noticed we already have a job called prometheus which is monitoring the prometheus server itself at localhost:9090 .

rule_files: this will be another yaml file which has rules either recording i.e. precompute frequently needed or computationally expensive expressions and save their result as a new set of time series or alerting rules.

Run prometheus using the following command

By default prometheus uses port 9090 . Which means we have to check the end point http://localhost:9090/metrics  for metrics. Open up http://localhost:9090/ in your browser to open the prometheus dashboard.

Open it and check how the metrics appears.

Execute few queries and check for data.

You may not get same as above as it has more targets.

Step 2: Install the Exporter – node_exporter/windows_exporter

Node Exporter:
Windows Exporter:

Node Exporter by default runs on port 9100 . So we get expect the metrics in http://localhost:9100/metrics

Open up the prometheus.yaml . And add the node exporter job to the scape_configs .

Restart the prometheus service with new config.
Run the query to monitor the average amount of CPU time spent in system mode, per second, over the last minute (in seconds)

Step 3: Grafana visualization

Download Grafana:

Install grafana and start server.

By default it runs on port 3000 . To change the port edit the configuration file as explained here.
Open: http://localhost:3000/

Default credentials are admin as username and password.

Grafana uses Prometheus as data source and also uses PromQL under the hood for queries.

Adding a datasource

1. Go to configuration to add datasource. http://localhost:3000/datasources
2. Click on Add Data Source and select Prometheus.

3. Add appropriate URL which is http://localhost:9090/

4. Click on Save & Test .

Adding a dashboard

We have to create dashboards in order to visualize the data.

Though instead of creating a new one from scratch, we can use dashboards which are already available publicly.

Node Exporter dashboard:

Windows Exporter dashboard:

1. Click on the plus icon and click on Import option.

2. You can copy the JSON or better just copy the dashboard ID, paste it and click on Load .
3. Select Prometheus as data source and click on Import . You should be redirected to the newly created dashboard.

All dashboard and panel configs are available as json. To learn how any panel is created or which metric and formula is used to calculate a visualization. Follow the steps.

1. Click on the down arrow on a panel.
2. Click on edit.
Alternatively, you can click on a panel and press e .

For this example the node(Host) and job(value of job from metric) variables are used as filters. The are values of the metric node_cpu_seconds_total

More on Grafana Visualization:

Check other dashboards/panels and checkout the values used and create your own dashboard to monitor your system.

Here we have only done monitoring. A proper monitoring solution should also have alerting system. As mentioned prometheus allows alerting and so does Grafana.

Learn how to setup alerts from the following links




Posted By: Vikas Kyatannawar, Osmosee

Automatic Deployment Using GitHub Actions

Posted on January 28, 2022 by in General, Software Development

Software development is a continuous process, with regular code updates from time to time. Whether from adding new features, fixing bugs or just performing general chores like updating project dependencies now and then. One effective approach to easily push and preview these local development changes to a staging or production environment is to create a continuous integration and deployment workflow. In the next few steps, I will teach you how to automatically deploy your project from GitHub to cloud server using GitHub Actions.


GitHub Account

In order to use GitHub actions you should have a GitHub account.

Cloud Server

You will also need a cloud server on which we will deploy the React app. For this tutorial we are going to a React app to keep the process of deployment simple.

Let’s go through some fundamentals

What is CICD?

CI and CD stand for continuous integration and continuous delivery/continuous deployment. In very simple terms, CI is a modern software development practice in which incremental code changes are made frequently and reliably. Automated build-and-test steps triggered by CI ensure that code changes being merged into the repository are reliable. The code is then delivered quickly and seamlessly as a part of the CD process. In the software world, the CI/CD pipeline refers to the automation that enables incremental code changes from developers’ desktops to be delivered quickly and reliably to production.


CI/CD allows organizations to ship software quickly and efficiently. CI/CD facilitates an effective process for getting products to market faster than ever before, continuously delivering code into production, and ensuring an ongoing flow of new features and bug fixes via the most efficient delivery method.

GitHub Actions

GitHub Actions helps you automate tasks within your software development life cycle. GitHub Actions are event-driven, meaning that you can run a series of commands after a specified event has occurred. For  example, every time someone creates a pull request for a repository, you can automatically run a command that executes a software testing script.
What can you do with GitHub Actions? The possibilities are limitless, you could do anything from:

  • Handling CI and CD (Build, test, and deploy applications)
  • Performance monitoring
  • Twilio voice call or SMS alerts

and much more!

Let’s Start

Our target here is to see how automatic deployment of a react project from GitHub to cloud server can be done using GitHub Actions.

Create Project Repo

For this project I used react-app-deployment-GitHub-action as the repo name.

Create React Project

Step 1

Clone the empty repository.

Step 2

Create the basic react app using create-react-app command.

Please checkout more about how to create a new react app here.

Step 3

Run the base app verify that there are no issues.

Step 4

Commit and push the code to GitHub.

Add GitHub Action workflow

Now that we have the react app in the repository, we can go ahead and create the GitHub Action workflow for deployment.

Step 1

Go to Actions tab.

Step 2

Select Node.js workflow.

Step 3

Create the workflow file.

Firstly rename the file as react-app-deployment.yml (you can use any filename).
Edit the new file and paste the following content.

Commit the file to the repo with a commit message.

Let’s break the above yml file and understand what we are trying to do.

This is the name of the workflow.

Here we are telling when this workflow should trigger. In my example I want this workflow to trigger whenever someone pushes code to the master branch.

A job is a set of steps that execute on the same runner. By default, a workflow with multiple jobs will run those jobs in parallel. You can also configure a workflow to run jobs sequentially. For example, a workflow can have two sequential jobs: build and test code, where the test job is dependent on the status of the build job. If the build job fails, the test job will not run.

For our purpose we just want to do deployment so we just have 1 job.

Configures the job to run on a self hosted server. Since we want to deploy the project on our cloud server.

For now we just want to use node version 16 for our react portal. But if you want to use GitHub actions for testing and you have a piece of code written in node and want to test it across different node versions then you can mention that in the node-version array.

For our purpose we just want to deploy on a server so we will go ahead with Node v16.

Groups together all the steps that run in the job. Each item nested under this section is a separate action or shell command.

The uses keyword tells the job to retrieve v2 of the community action named actions/checkout@v2 . This is an action that checks out your repository and downloads it to the runner, allowing you to run actions against your code (such as testing tools). You must use the checkout action any time your workflow will run against the repository’s code or you are using an action defined in the repository.

This step uses the actions/setup-node@v2 action to install the specified version of the node software package on the runner, which gives you access to the npm command.

Finally we would like to install the node dependencies and build the production files. Optionally you can even run the test cases.

Note that as soon as you commit the file the workflow will start. Since the workflow file is being pushed to the master branch.

This workflow will fail since we did not yet tell GitHub which server to use to run the workflow on.

Setup GitHub Runner

We have the workflow in place but we still did not specify which self hosted server to use. For this you need to add a GitHub Runner to the repo.

Step 1

Go to Settings tab.

Step 2

Go to Actions tab, and click on New self-hosted runner.

Step 3

Select the runner type. We are going to use a Linux server.

Step 4

You will see a bunch of commands which will guide you through the installation process.

Run the above download steps on your server.

Step 5

Please run all the commands in the same order in which they are shown to download.

Step 6

When you configure your runner please fill in the details which are asked.

You can give a name to your runner and also give a name for the work folder.

Step 7

Finally run the run script.

This will start your runner and it will start listening for the workflow events.

Step 8

Confirm that the runner is running.
Go to Settings > Actions > Runners

You will find that your runner is available and ready to take on any job.

Trigger workflow

Let’s go back to our project file and make a small change to see how this workflow runs now.

Step 1

Make a dummy update to base react app.

For now I added a h1  tag

Step 2

Commit and push the code. Go to the Actions tab and you will find your workflow running

Step 3

You can click on the latest workflow and check the details of the build job.
You will find all the steps and it will also show you the time it took for each step.

Step 4

Login to your server and you will find the build files inside actions-runner folder.

Here all the build files are there which can be served via apache or nginx.

Nginx Setup

I would like to keep this setup very simple.

Step 1

Install nginx

Step 2

Update the default nginx file

Step 3

Update the root path to your build file.

Here I am telling nginx to load the files from my react project.

Step 4

Restart nginx  service

Step 5

Open your server IP address and you will your react app.

Keep GitHub Runner running

You will find that after you close your server terminal where ./ was running, your GitHub runner stopped.

What you can do instead is run the following command.

  1. Stop the self-hosted runner application if it is currently running.
  2. Install the service with the following command:
  3. Start the service with the following command:

You can find more details about this here.


Overall, I very much enjoy the experience of using GitHub Actions. I think it’ll be the future standard of CI/CD platforms. Every time I use GitHub Actions I’m delighted by how fast I can create workflows to automate a manual task and find new patterns to use GitHub Actions.


Posted By: Vishnu Kyatannawar, Osmosee

Nextcloud: Why Should You?

Posted on January 7, 2022 by in General, NextCloud

Nextcloud is open source file sync and share software for everyone from individuals operating the free Nextcloud Server in the privacy of their own home, to large enterprises and service providers supported by the Nextcloud Enterprise Subscription. Nextcloud provides a safe, secure, and compliant file synchronization and sharing solution on servers that you control.

You can share one or more files and folders on your computer, and synchronize them with your Nextcloud server. Place files in your local shared directories, and those files are immediately synchronized to the server and to other devices using the Nextcloud Desktop Sync Client, Android app, or iOS app.

Why should you?

There are multiple reasons to adopt nextcloud. Let’s dive into this and look at some of the features nextcloud has to offer that suits your business needs.

On Premises

Nextcloud is, hands down, the best on-premise cloud server platform on the market. Not only is it easy to deploy, it’s also reliable and expandable.

Unlike cloud storage, on-premises storage relies on infrastructure at your Company’s brick and mortar office to manage your data. You’ll own all of the equipment and you will be responsible for the lifecycle management. As you might guess, there are several pros and cons of on-premises solutions for data storage.

Though cloud-storage has been all the rage lately, some companies still believe that on-premises solutions are best suited for their business needs. For example, many enjoy the greater security that on-premises solutions and storage give their data. On-premises storage is a great option for your business because it can:

  • Operate without internet
  • Lower monthly internet costs
  • Provide greater security
  • Offer control over server hardware

Control & Compliant by design

Protect, control and monitor data and communication across your company. Guarantee compliance with business and legal requirements. Keep your data on servers you own, at all times. Nothing leaks, not even metadata.

Nextcloud products are designed with compliance in mind, providing extensive data policy enforcement, encryption, user management and auditing capabilities example: HIPAA, GDPR and more.

Your teams are using email attachments, public chat apps and consumer file sharing tools to communicate and collaborate. Then nextcloud is the best option to keep that under control

  • Host your own collaboration platform.
  • Protect your IT investment by re-using existing infrastructure.
  • Ensure compliance, security and flexibility.
  • Know where your data is, who has access and how it is used.
  • Facilitate secure collaboration and communication.

Security and Authentication

There is a lot to talk about security in nextcloud.

Nextcloud is designed to protect user data through multiple layers of protection. It aligns with industry standards such as Clause 14 of ISO/IEC27001-2013 and related standards, guidance and security principles. Their solution is built around combined assurance layers consisting of rich security features, applied best practices governed by policy and the design itself validated by industry standard testing processes.

Control is key to security. With Nextcloud, your IT department takes back control over its data, managed under its policies and procedures. Nextcloud integrates in the tooling you use in your data center like logging and intrusion detection and works with existing authentication mechanisms like SAML, Kerberos and LDAP.

Nextcloud supports your existing storage solution, keeping data under control of trusted IT administrators and managed with established policies. Nextcloud works with industry standard SQL databases like PostgreSQL, MySQL and MariaDB for user and metadata storage.

Nextcloud offers built in monitoring tools and integrates with existing MDM, DLP, event logging and backup tools, enabling existing tool chains to be used to monitor, backup and restore systems.

Nextcloud leverages existing data storage and database technologies so current security policies and governance processes can continue to be used to manage, control and secure operations with Nextcloud. Your IT department is fully in control.

Nextcloud includes a variety of second factors like TOTP, U2F and SMS gateways. 2-factor authentication can be enforced and user sessions and devices can be managed.

Nextcloud is also among the first in the industry to provide support for the WebAuthn standard, enabling password-less authentication and support for Windows Hello, various FIDO2 keys and other standards-compliant authentication devices.

You can find more security details here:


The real power of Nextcloud Is Its Apps. If Nextcloud were only a personal alternative to file-hosting services like Dropbox, it wouldn’t be such a big deal. Its real power, however, is in the many extensions, or “apps”, that provide many additional functions.

The open source community gives you a variety of apps to choose from which suits your needs. Either you can go with the apps which are out there or you can build your own apps as per your business need.

You can find a lot of nextcloud apps here:

Some of the popular apps are:

And many more… You can find a more detailed description of these apps in their respective pages on Nextcloud apps.
These apps make Nextcloud different from other file hosting services.

Mobile and desktop clients

Nextcloud gives you access to your data and communication wherever you are. Their easy to use desktop and mobile clients are available for all major platforms for free!

Users can access and share their data on Nextcloud through sync clients for Windows, Linux and Mac as well as Android and IOS, providing a smooth experience no matter where data is located.

The Nextcloud desktop client keeps photos and documents always up to date, enabling you to work like you always did.

Any file you add, modify or delete in the synced folders on your desktop or laptop will show up, change or disappear on the server and all other connected devices. Sync one or more folders locally with folders on the server and pick what folders you don’t need.

The mobile clients feature integrated real-time document editing. Nextcloud Text is used for note taking with Markdown files, Microsoft Office compatible document editing on-the-go is available through Collabora Online or ONLYOFFICE when these are installed on the server.

The clients also allow users to comment on documents, add a note to a shared file, view and act on server notification like a request to accept a file share or approve a login, see activity for any file and much more. Productivity is guaranteed, wherever you are!

No matter what device or how many devices you use, you will always find consistent data.


Nextcloud is being used by many corporations and since it is an open source project it has a lot of contributors. More than 1000 apps are published to be compatible with latest version of nextcloud. Nextcloud 22 brings a wide range of improvements for the modern digital office with new workflows, important new collaboration features in Talk, Groupware, and Files for effective self-management for teams.

The biggest improvements Nextcloud 22 introduces are:

  • User-defined groups with Circles that makes it easier to manage teams where you can share files or assign tasks to circles, or create chat rooms for a circle.
  • Integrated chat and task management where you can simply share a deck card into a chat room or turn a chat message into a task.
  • Easy approval workflow, where an administrator can define a new approval flow in the settings and users can, on a document, request approval.
  • Getting your document signatures easy with integrated PDF signing with DocuSign, EIDEasy, and LibreSign.
  • Integrated knowledge management Nextcloud puts knowledge available to everyone at a moments’ notice, providing easy search, sharing, and portable access.
  • Groupware improvements bringing a trash bin feature in Calendar and more. Nextcloud Mail features improved threading, email tagging, and support for Sieve filtering.
  • Big improvements in Nextcloud Talk with voice messages, location and contact sharing, message deletion and much more.

There are many more new features and changes like notifications in the app navigation, integrated compression in the Files interface, and significant performance improvements to universal search.


Nextcloud is a great alternative to proprietary services such as Google Drive and Dropbox. It also provides a set of apps which you can install to extend its functionality in various ways. Below is a summary of the features offered by nextcloud:

  • Nextcloud is open source – there are no limitations and you can inspect, integrate, extend and modify Nextcloud however you want.
  • Powerful, integrated logging, two-factor authentication and NIST compliant password policy control functionalities.
  • Sharing and Provisioning REST APIs. Facilitates the integration of remote 3rd party apps.
  • Nextcloud offers an easy to use user interface which comes with search functionality, favorites, tags and even more ways to quickly reach the files you need. Full Text search is available using Apache Solr.
  • Authentication through LDAP / Active Directory, Kerberos and Shibboleth / SAML 2.0 and more.
  • Fine-grained control from mobile, desktop or the Web over data access and sharing capabilities. Pick from the list of users and groups, stored either locally or on another, authorized, server.
  • Quick access to core functions for app development with the powerful Nextcloud App API and webhooks following the publication / subscription model.
  • Text file editing and thumbnail previews of PDF, images, text files, office files and more.
  • Pre-loaded files and folders for new users. Populate a new user’s Files area with, for example, a tutorial file, which appears when they first log in.
  • Advanced quota management with configurable accounting of external storage.
  • Built in, easy to use theming to set color, login background and logo from Administrator screen.

How Osmosys Can Help?

Osmosys has been developing Nextcloud apps since Jan 2019. We have worked with some of the organizations from Germany and helped them in developing large scale solutions around Nextcloud to meet their business requirements.

For example: Nextcloud is capable of keeping the data in sync across different clients which are connected to one Nextcloud instance. We have come up with a solution for one of our clients to be able to sync their data across multiple Nextcloud instances. This requirement is very specific to their business requirement.

We can develop custom nextcloud apps which are very specific to your business needs. Osmosys will also help with deployment and maintaining the Nextcloud instance. We also provide support for enhancements and maintain app compatibility with future Nextcloud releases.

Contact us for more queries.



Posted By: Vishnu Kyatannawar, Osmosee

Growth Of Mobile Applications

Posted on December 28, 2021 by in iOS, Mobile Technologies

A mobile application, most commonly referred to as an app, is a type of application software designed to run on a mobile device, such as a smartphone or tablet. Mobile applications frequently serve to provide users with similar services to those accessed on PCs.

The purposes of the apps is to provide utility, productivity, and navigation to entertainment, sports, fitness, and just about any other imaginable.

Smart watches and fitness trackers are two examples of how mobile technology is changing. The internet for things (IoT) has allowed for technologies like remote control of home appliances, heating and security  systems; there is no doubt that things like this are the future of the IoT. From innovations like a connected car, health monitors, Google glass, fitness trackers and latest smart watches, the future of mobile application seems to integrate them perfectly into all aspects of our lives.

But, before starting to work on one, Let’s go to know some app usage stats that can help you create an intelligent app development and marketing strategy.

Mobile Usage

Almost everyone is having a smartphone today and the usage of smartphones in people’s day-to-day life is growing exponentially. There are 5.29 billion mobile phone users in the world today, according to the latest data from GSMA Intelligence and in it 3.2 billion people are using smartphones in the world and the growth of mobile applications has been steadily on the rise anchored on the swelling number of smartphone users across the world.

  1. Internet usage on mobile has been rising as desktop internet usage has stalled
  2. Americans spent eight percent more time on mobile than watching live TV each day.(Source)
  3. Generation Z (ages 6-24), Millennials (ages 25-40), and Gen X/Baby Boomers (ages 41-75) spend 16 percent, 18 percent, and 30 percent more time year-over-year,respectively, in their most-used apps. (Source)
  4. Only eight percent of time spent on mobile is spent using a web browser (Source)

In 2021, China had more smartphone users than any country in the world at almost 912 million. India had the second most smartphone users, although less than half as many as China.

Mobile App Downloads

It is not surprising that an average smartphone user has more than 40 apps installed on their phone. However, only 10 to 20 are the apps are actively used.

    • The iOS App Store launched in 2008 with an initial 500 applications available.Today, 1.85 million different apps are available for users to download. Android users have even more from which to choose, with 2.56 million available through the Google Play Store. (Source)
    • In the third quarter of 2021, users downloaded 27.6 billion apps from Google Play. In contrast, mobile app only generated roughly 8.1 billion downloads in the Apple App Store. The Google Play platform has always made up the bulk of app downloads but the Apple App Store is stronger in terms of revenue generation.
    • There is a report from Statista saying that for every four non-gaming applications available on the App Store, there is a gaming application.
    • According to Statista, the market share of Android devices is 87% and hence, the competition in Google Play Store is a lot lighter than in the App Store and it underscores the scope for market growth in Google Play Store for various mobile app development initiatives in India that wish to list their applications in these stores.
    • Apple’s App Store has over 500 million weekly visits.
    • Social media mobile apps are the most used app category

Google Play Vs App Store Downloads

Google Play Store and the App Store are the most recognizable app stores in the world. People with devices running on the iOS will download the apps that they need from the Apple App Store while users with devices running on Android OS will download apps from Google Play Store. The total number of downloads in Google Play Store was 27.6 billion in the second quarter 2021. During the same quarter, the number of app downloads in the App Store was 8.1.

Number of Apple App Store and Google Play mobile app downloads worldwide from 3rd quarter 2016 to 2nd quarter 2021

Most Popular App Categories

we can say the mobile application market has exploded in recent years. People are more focused to build a mobile app using the latest technology trends. Because apps are an integral part of the whole smartphone ecosystem, whether it’s iOS or Android. These apps are what truly make the mobile experience engaging and fun.

Now, these apps are split and bundled under different categories of mobile apps. The categories are formed depending upon the features of the mobile applications.

There are over 20 categories of mobile apps. The Google Play Store has about 33 mobile app categories. On the other hand, the App Store from Apple has about 24 categories of mobile applications.

The top 5 most popular app categories – Games, Business, Education, Lifestyle, and Utilities make up about 50% of app share on Apple’s (iOS platform) App Store. (Source: Statista)

As of June 2021, business apps were the second-most popular category in the Apple App Store with a share of 10.10 percent of active all apps being business apps. Games were the most popular iOS app category, accounting for a total of 21.49 percent of active apps.

Most popular Apple App Store platform categories in June 2021, by share of available types of apps

Global Apple & Android Apps Spending

There’s an app for almost everything these days. From online delivery of food, groceries,and day-to-day stuff. And people aren’t shy of spending money on the apps.

Overall consumer spending on in-app purchases, premium apps, and subscriptions grew 15.1 percent Y/Y to $33.6 billion from $29.2 billion, across Apple’s App Store and Google Play Store in the first half of 2021.(Source)

Compared to the Play Store, Apple’s App Store saw relatively modest growth. The revenue from App Store grew 13.2% – from $19 billion to $21.5 billion compared to last year

According to International Business Times, the App Store receives over 1,000 app submissions every day.

How to market an app

Over around four million of apps are available from the world’s leading app store today. Marketing strategy is the only way to stand out in today’s app market

While focusing on mobile app development and building an app that functions properly is a central factor for success, if users’ don’t know the product exists, your hard work is worthless. Before developing any  applications have a complete understanding to the below questions to make your app’s success.

    • Who is the target audience for your app?
    • Why will they be interested in your product?
    • How are your competitors currently targeting the same audience?

And this are the some essential app marketing strategies

    • App Store Optimization

    It is the process of improving your app’s visibility in the App Store and Google Play Store. It requires you to identify and utilise keywords that will help your app rank high in the App Store. It is also essential to include screenshots of your app and a video of in-app use. You can also make use of secondary app categories so users have more than one way to find your app

    • Social media marketing
    • Paid user acquisition campaigns
    • Influencer marketing


Mobile apps have significantly grown over the past few years. And mobile apps industry industry isn’t showing signs of slowing down any time soon. And the future of the mobile app industry is very bright with over 3.2 billion smartphone users and 1.14 billion tablet users worldwide, there’s a good market for mobile apps. And studies shows that 88% of mobile usage was spent on apps. And some apps have become an extension of ourselves.

Posted By: Ravi Teja Koduru Siva Naga, Osmosee


Lexical Environment & Closure

Posted on December 20, 2021 by in Javascript

Code Blocks

If a variable is declared inside a code block {...} , it’s only visible inside that block.

For example:

We can use this to isolate a piece of code that does its own task, with variables that only belong to it:

For if, for, while and so on, variables declared in {…} are also only visible inside:

Nested Functions

A function is called “nested” when it is created inside another function. It is easily possible to do this with JavaScript. We can use it to organize our code, like this:

Here the nested function getFullName()  is made for convenience. It can access the outer variables and so can return the full name. Nested functions are quite common in JavaScript.

What’s much more interesting, a nested function can be returned: either as a property of a new object or as a result by itself. It can then be used somewhere else. No matter where, it still has access to the same outer variables.

Below, makeCounter  creates the “counter” function that returns the next number on each invocation:

Despite being simple, slightly modified variants of that code have practical uses, for instance, as a random number generator to generate random values for automated tests.
How does this work? If we create multiple counters, will they be independent? What’s going on with the variables here?
Understanding such things is great for the overall knowledge of JavaScript and beneficial for more complex scenarios. So let’s go a bit in-depth.

Lexical Environment

Every execution context has a reference to its outer environment, and that outer environment is called Lexical Environment.

We can say that whenever an execution context is created to execute the code along with it a lexical environment is also created by the JavaScript engine. Each lexical environment has reference to its parent lexical environments.

A lexical environment can be considered as a data structure which holds identifier-variable mapping (identifier => name of the variable/functions). It has two components:

  1. Environment Record – Actual place where the variable and function declarations are stored
  2. Reference To Outer Environment – it has access to its outer (parent) lexical environment. This component is the most important in order to understand how closures work.

A lexical environment object looks like this:


A closure is a function that remembers its outer variables and can access them. In some languages, that’s not possible, or a function should be written in a special way to make it happen. But as explained above, in JavaScript, all functions are naturally closures (there is only one exception, to be covered in The “new Function” syntax).

Usually, a function remembers where it was born in the special property [[Environment]]. It references the Lexical Environment from where it’s created (we covered that in the chapter Variable scope, closure).

But when a function is created using new keyword, its [[Environment]] is set to reference not the current Lexical Environment, but the global one.

When person()  is executed, the JavaScript engine creates a new execution context and a lexical environment for the function. After this function finishes, it returns displayName()  and assigns it to peter variable.

When the person()  finishes, its execution context is removed from the stack. But its lexical environment is still in the memory because its lexical environment is referenced by the lexical environment of displayName() . So name variable is still accessible.

Posted By: Shubham Kumar Jha, Osmosee

App Clips! How Can App Clips Help Your Business Acquire More Customers

Posted on August 10, 2020 by in iOS

Twelve years ago Apple revolutionized the industry with the launch of App Store, and nine years ago Apple came up with a phrase, “There’s an application for that!”. In June 2020 at WWDC, the phrase saw itself getting tweaked: “There’s an App Clip for that“.

It is the first time, the tech giant took user experience outside of application install.

What is App Clip ?

An app clip is a small part of your app that’s discoverable at the moment it’s needed. The App clips are designed to be lightweight and fast so that the users can open them expeditiously. Whether they’re ordering take-out from a restaurant or renting a scooter, users will be able to start and finish an experience from your app in seconds. And when they’re done, you can offer the opportunity to download your full app.

App Clips offer your users two functionalities: to use a small part of your application and download the full application.

Use the sub-part of your application – Users only function around that part of your application which is needed at that moment. This functionality is based on a specific feature or feature set of your application.

Download the full application – For making it easier for your customers to access the entire application, you can present an option for download at an appropriate time in your app clip. You can even persist any information the user has provided and seamlessly transition it to the full app.

How Are App clips Made Discoverable?

  •  App Clip Codes – By 2020 end, Apple will offer the tools needed for creating the app clip codes. But it doesn’t mean we cannot appreciate what is to come. The app clip code would have an encoded URL and an NFC tag, which would enable the code to eb tapped and scanned by the iPhone camera.
  •  NFC Tags – Users can tap their iPhone on NFC tags that you place at specific locations to launch an app clip, even from the lock screen.
  •  QR Codes – You can place QR codes in specific locations for enabling users to launch the app clip by scanning the code through their camera app or barcode reader.
  •  Safari App Banner – When your webpage is configured with a Smart App Banner for app clips, users can just tap to open it from there.
  •  Links in Message – By enabling sharing inside your app clip, users would be able to send it via iMessage to their acquaintances. The receiver, on the other side, will be able to open it straight from their messages.
  •  Place Cards in Maps – If your app clip is linked to a particular location, you can register it to appear on a place card in Maps, which users will be able to directly open.

How Can App clips Help in Business?

Spot advertising

The conversion will undoubtedly grow because companies will now be able to start their spot advertising campaigns offering services and info about themselves only when such services or data are really necessary for their target audience. The customer receives the opportunity to use exactly that feature that best suits the background.

Preserving Privacy

At the same time, the customer privacy level remains high, and that is extremely important nowadays. The emerging tool will bring benefits to businesses, users, and Apple itself.

Easy Pay

What’s more exciting is that with the close integration of Apple Pay, you don’t have to worry about saving payment information as long as your application supports “Sign in with Apple”.

Offline Support

The support for offline applications through QR scan and NFC tags makes it a great way for the brick-and-mortar business owners to acquire customers. All they have to do is integrate the functionality of app clips in their business’s iPhone application.

For a platform provider who services businesses, may create several app clip experiences in App Store Connect and use a single app clip to power them all. To people using the app clip, it appears with the branding of an individual business or location instead of your own branding.

Use consistent branding

When people see the app clip card for a business, the brand for that business is front and center. Tone down your own branding and make sure the branding for the business is clearly visible to avoid confusing people when they enter the app clip experience.

Consider multiple businesses

An app clip may power many different businesses or a business that has multiple locations. In both scenarios, people may end up using the app clip for more than one business or location at a time. The app clip must handle this use case and update its user interface accordingly. For example, consider a way to switch between recent businesses or locations within your app clip, and verify the user’s location when they launch it.

Where Can Users Resort to App Clips?

The main purpose of this tool is to increase user engagement, making it as easy as possible for users to interact with any app. In fact, any company providing a mechanism for quick goods or services ordering can use App Clips.

Here are some of the examples:

  • Gift certificate or discount coupon activation;
  • Bicycle or electric scooter rental payment;
  • Facility access ticket validation;
  • Electronic queue management (for example, in a bank);
  • Cafe order payments;
  • Cars park spot rental;
  • Hotel self-check-in;

Such mini-apps will greatly accelerate customer interaction with a company offering goods or services required by users.

Posted By: Anand Prakash, Osmosee

Osmosys locks-in their campus selects during the lockdown

Posted on May 19, 2020 by in Life of an Osmosee
Osmosys – Virtual Campus Placements

As we complete 2 months of lockdown due to the Covid-19 pandemic, organizations are still adjusting to the “new normal” – work from home, managing teams via online meetings and messaging. It is now inevitable for organizations to alter their business models and embrace digital transformation so that business continues seamlessly despite this unfavorable situation.

With the IT industry in India expected to have a lower growth rate due to this epidemic, Osmosys is no exception as we are also experiencing delayed decisions, temporary suspension of contracts and payment delays, However, we are committed to our employees, customers and stakeholders to wade-through these tough times with a sense of caution.

Then what about the commitments we made to our campus selects? This question was haunting us…

We had given job offers to more than 50 graduates from various colleges across India and this lockdown situation has postponed their final examinations and valedictions, which in-turn would delay their joining dates with us. We had to get creative in taking advantage of this downtime and engage our future employees.

We decided to fast-track their induction into Osmosys by employing a technology-driven online training program that would enable our campus selects to utilize this current lockdown period productively to acquire and sharpen their skills and get ready to make a smooth transition from “campus to corporate”.

To start with, we had to be cognizant to the situations and priorities of our campus selects and so we worked closely with their Placement Officers and encouraged them to register to our training program with no obligations and with a guarantee that this had no bearing to our current job offers to them.

In no time, we got an overwhelming response to our initiative and more than 40 of our campus selects registered for the program.

Our Managers and Leads came up with a training agenda that was inclusive, personalized and practical, covering topics like

Engineering Basics – Problem Solving, OOPS and Principles of Programming
Programming Languages – HTML/CSS, JavaScript, JQuery and SQL

Each topic is spread across 5-6 online classroom-style session of 2 hours each with material-led training, daily assignments, mock tests and a final examination at the end of each topic. Each of our trainer is backed-up by an observer and a few assistants that answered questions and queries of the participants via dedicated group chat and email.

As we pilot this for the first time, we are hopeful this attempt to disseminating knowledge via online to our future employees would accelerate their learning and help them join our teams with more confidence.

Historically, major world events are often an inflection point for rapid innovation and only time will tell if online technology and collaboration tools would be a viable alternate to manage all or most of our business processes including hiring, training, onboarding et all.

Posted By: Dinesh Madireddy, SVP – Global Delivery, Osmosee

Osmosys at the forefront of adapting to the “new normal”

Posted on April 19, 2020 by in Life of an Osmosee


On a sunny Monday afternoon in early Feb 2020, my boss and I were having a casual chat on ‘work-life balance’ and we instantly decided that it was time for a ‘break”. We quickly nailed-down on Goa as the best place to go on a quick vacation and enjoy the sandy beaches.

As we were getting nearer to the travel day, the news about corona virus was circulating. We just ignored and started planning for the trip. But just two days before the travel, my boss called me and said that we need to cancel our trip due to the virus prevalent. I thought he was too paranoid as at that time there was not even one positive case in India.

By mid-March, the global scene had changed drastically with the Covid-19 epidemic hitting hard and there was lot of confusion and chaos everywhere. The foresightedness of our CEO needs special mention as even before most companies were trying to understand the situation, we were already implementing strict “social distancing” and “personal hygiene” regimes in our office.

Indian IT Industry traditionally never believed in Telecommuting (aka Remote working or work from home), and we were no different. Arguably so, because we are a “bottom heavy” pyramid with close to 80% of our resources less than 5 years experienced. Our senior and mid managers have always been skeptical of their teams working remotely as they want to see them together and working in front of them. The fear of lack of control or losing control is still an issue and IT companies in India continue to hold this stigma.

But by end of March, the Covid-19 situation was worsening, and lockdown was imposed by the Government. In less than 48 hours, our teams switched to work from home by moving desktops/laptops to their homes, sorting out connectivity and infrastructure issues and it was ‘business as usual”. The speed at which we transitioned to a new way of working from home and team collaboration without physical presence in office, surprised even our CEO and senior management.

We quickly put some procedural protocols in place for remote working, educated our resources on the do’s and don’ts and just prayed that this model is productive enough for our business continuity. By end of April, our teams had adapted so well to the “new normal” that the top management sees the possibility, of allowing up to 50% of staff to work remotely which would reduce up to 20% on costs like facility charges including real estate, maintenance of office space and other infrastructure related overheads.

However, we need to be cautious in our approach and weigh-down the advantages and disadvantages of telecommuting. A young IT workforce in India still needs lot of mentoring, learning and sharing for their career growths. Only time will tell how the Indian IT companies would accept the ‘new normal’ and if this becomes an integral part of our operating models.

Having said that, post Covid19 era will be new for all those that believed “only the paranoids survive”.

And as for our Goa plans, the beaches have to wait for now…

Posted By: Dinesh Madireddy, SVP – Global Delivery, Osmosee

How To Create The Best User Experience For Your Application?

Posted on February 25, 2019 by in Mobile Technologies, Software Development

Best user Experience For Your Application
“Steve Jobs has correctly called out in of his quotes that “Design is not just what it looks like and feels like. Design is how it works.”

We use the Internet in our own way; would want it to be fast, informative and hassles free. As we all like our internet for entirely different things that suit our interests. No doubt, the Internet dispenses our functional data, news and knowledge for our personal, social and economic building and with that, it is up to us how to make our time on the 24X7 world wide web, worthy and productive.

The time could be made productive, and browsing could be easily possible if only we have software that can help us use this feature(the internet) by giving us the best user experiences. What best than Osmosys that has implied a few tips and ways to give us, the users the best experience of the applications that we use.

An application is made for users that can use it for a purpose. Out of a hundred things of an application’s features, one key element should be that- it should be User-Friendly. Providing users with a quality app will make a mark in the market and also will encourage users to build trust in you.

For building an application, the users are looking for and something that can help them meet their expectations and also go beyond it, we must understand and keenly focus on their needs and expectations. We can do that by looking deep at their patterns and psychological behavior and achieve our goals to satisfy users.

Collecting user data and understanding user pattern is just the initial step of the long Osmosys journey. Today’s mobile users have been demanding a lot more from apps to retain them and to attract them for coming back again and again after the initial download. We at Osmosys understand that the best user interfaces are the ones that go beyond their way to provide the users with easy to learn, simple to browse and effortless right tools.

User experience, which is the value that the user gets while using the app is an essential element in retaining them. Listed below are a few of those highly used tips and tactics by Osmosys that helps one create the best user experience for the apps in its life cycle.

1) Understanding:


Design nullifies the problem. To provide better solutions, you have to understand the challenges faced by the user. A proper understanding of the user requirements is the first step
you need to proceed with before designing the product.

To understand the requirements, you can follow industry standard user research methods including group and individual reviews. Along with that you can also include interviews with the client himself and showcasing the existing products you have and getting feedback for that and try implementing the input and come up with better-improved products.

Once you get an understanding of what people think and want, you can build a product that helps them act to your analysis.

2) Research:


One of the best things a product have in it is a combination of best features. This is possible only when you do research. The design team should do their research work to explore how the world is accepting such products and what else would they like to add.

  • When you do keen research, you’ll also get to know what your competitors are up to and get inspiration from their work
  • While researching, always have in mind: Analysis of competitors approaches
  • Research on similar features across the world
  • Study of the latest User experience design principles and trends
  • But keeping it all parallel to your own user experience guidelines

3) Sketch And Design:

Sketch And Design
After noting the user wants and preferences, you have to make sure the design is ready for a quick scanning as user behaviors very much on mobile devices. It also needs to be glacable; where glanceability refers to how quick and easy the visual design could convey the information.
Maintaining visual consistency with the major facts, such as- the colors used, a set palette needs to be used, alongside the typography, and all other design elements. All these together will create a seamless visual flow that will usher users from the initial component of the design to other factors that shall help them complete their work and meet their goals with ease.

Key points while Sketching and Designing:

    • Create ideas and work on basic sketches/ designs
    • Some sessions with stakeholders to get their reviews from a technical perspective
    • Re-doing sketches and conducting re-test them with stakeholders
    • Design UI images
    • Finalize theme, guidelines required and specs for the implementation
    • Design icons to display on screens

4) Personalize:


Personalization comes into picture when the past behavior visits are recorded accurately by
an app and is being stored for retargeting purposes. If a user has been detected with specific buying patterns, you can provide them with suggestions and deals to assist them when they’re about to make a purchase. Personalization helps provide a unique, admissible experience to the user. The better the aligned experience is with a user’s needs and preferences, the more likely they are to build trust in you and willing to continue to use the application.

5) Reducing Search Effort::

When you help your users find what they need swiftly to satisfy their needs and drive conversion rates. There are a lot of strategies one can use and implement into your app such as searching by keywords and barcode scanning. Providing users with customizable search option and filters to guide them directly to exactly what they’re looking for and this would significantly increase conversion rates. As the sole purpose of this method is to help users find what they’re looking for so it’s important that the search engine integration doesn’t filter down to 0 results.

6) Implement:


Since technical staff engages in the early stages of the process, they can start implementation while the Design phase is still under the process.
The Development team builds back end functionality first and thereby connects it with UI
when the design artifacts are in their possession.
It is always advised that the Design team involves in this step to enhance the development phase.

7. Assure Security and Trustworthiness:

Assure Security and Trustworthiness:

At the end, everything between a manufacturer and the user comes down to ‘Trust.’ A relation that is built on trust lasts longer and we need to put this to practice. A Mcafee online study confirms that they’ve found privacy-invading apps more common these days. With most of them containing virus malware.

8. Evaluate:


Once you’re done with the understanding the users’ requirements and have designed the product as per their need and have created a trust with the user as the product features are implemented, the end product is evaluated based on the following factors:
Whether the product made or the system created is usable? Is it swift and feasible to use for the end user?
Is it easily searchable app?
Does it provide the expected solution to user’s concerns and queries?

The credibility of the product is also a critical factor in helping the user make the decision for using it because of the experience it provides


By following above amazing tips and tactics listed by Osmosys, a greater user experience can be provided. All the major stakeholders of your company help you in the process by performing their tasks assigned and the duties designated to them. This would be the best way to retain your existing clients and also attracting new users in the market.

For more such tips and help regarding your software, you can contact us, at Osmosys.

How to Solve Common Problems In Custom Software Development?

Posted on February 12, 2019 by in Software Development

Custom Software Development

A clever person would want to solve the problem. A wise person better AVOIDS it. – Osmosys

What is Software?


The software is a collection of data or a set of instructions that tells the computer how to work and it enables the computer to perform a specific task. The software handles an abundance of our daily utility and specialized tasks a user would want to perform, such as accounting, communicating, data processing and word processing, etc.,

How does Software help today?


With the introduction of technology in the modern world, challenges faced by business communities are solved by revamping the existing infrastructure with advanced custom software.

There are various processes involved in developing software, it is simple to outsource that segment, but the team which works on drafting the whole software program has to understand and design it in such a manner that it meets the requirement of its end users that is you. The primary goal of a software institution is to build a product that not only fetches more profit but also realizes user confidence in them.

After a continuous effort to solve the difficult areas in this aspect of our clients; based on our experience, we, at Osmosys have analyzed the most common issues while developing new software products and also have listed the following points which if you follow, you won’t have a hard time developing software.

Smart Overlook:

Smart check for all the functions and operations where Mathematics and numbers are involved. To make sure there aren’t any incorrect calculations.


While developing the software; the response time and the transaction throughput rate has to be rapid and swift; which effects the performance of the whole software.


Sometimes it also happens that the data, which is shown to the user through the software, is correct but the user might not be in a position to thoroughly understand the data. It may sound like a problem, but It isn’t as the user will be entirely dependent on the data which the computer (software) provides.

Any confusing or misleading data that a computer system provides can prove to be very costly sometimes.

Adequate Security controls:

Adequate Security controls

Sometimes often, unauthorized access to the system is not adequately controlled and detected. In such incidences, others may also be able to perform transactions due to the lack of authorization levels checks for appropriate job roles. For example, a person who doesn’t have any managerial intervention but due to inadequate privacy access might be able to approve by their own over time. Or, a person who isn’t a part of the payroll department might be able to view the other employee’s payroll files.


In any field you may land, if you do not garner the knowledge it requires, you know sooner or later, you’ll know that you aren’t fit for that particular area of specialists. At Osmosys, we give utmost importance to one’s knowledge in our Software business. We do not encourage folks with a lack of knowledge as it comes with high risks for project development. We believe in regular checks on the work. So if we feel you are not ready to check the project on a daily basis on your own, you need to have an internal person to assist in this.

Our understanding firms that without an experienced and dedicated Project Manager, managing a development team will never be a cakewalk and only become a challenging task. Be assured, for all your projects, we at Osmosys, have a team of dedicated Project Managers who have the best of abilities to meet your requirements that you’ve set clearly and to always help the team to move in the right direction only towards reaching the top.

 Correctly blending and Merging of data –

 Correctly blending and Merging of data

There can be situations where data is obtained from one source and blended or/and merged with data from another source. Examples can include sorting multiple files into a single file or table or matching data from the master file to an ID number entered as a lookup entry. This can create a high impact on an organization.

So, we at Osmosys help you build a system that not only solves the confusion of the files but also help you with the sorting, better alignment, records storage and also create a kind of environment that may help you work freely without having to think about any misses.

 With those keys specified, we always can’t rest assured that software will never go wrong, right? It is widely assumed that software is once developed will work faultless for life.

At Osmosys, we believe in testing things out before we set the product with the end users. Because we understand the importance of running multiple checks in software development before the product launches at your doorstep.

It not only discloses the errors that may occur through the initial development stages but also assures its creators the performance it’s going to deliver and the capability of the application to make it satisfactory to end users, that is you. Which, in turn, helps us gain confidence in the user market since the delivered software is of top quality.

Software testing in a Go –

Software testing in a Go

Osmosys believes in nothing less but quality product. Software testing is a crucial process which comprises of several interlinked processes which basically looks at the three following things –

  • Software completeness concerning functional requirements
  • Identifying the technical bugs and
  • Assuring that the software is a bug-free, evaluating enforcement, security, and installation.

The software can go in small parts, as a whole, or within an active system. Going through each of these certifications decides if the software product is suitable to use or not. The performance in each of these tests would help in determining the perfection and changes that should make the app a better one. Cutting off these lags will help the testing team run successive tests that prove the overall performance of the software. Until the software attains an aspired level of quality, this sequence will keep going on.


The primary goal of Osmosys Software entity is to give you an assurance of good faith and build up the trust of the best work any software entity can provide at the best of resources. Software testing is a crucial component of software development and Software Development’s ongoing. Especially when it is done from the initial levels of the development process, it can be of excellent use to enhance the performance of the products with the focus given to each unique user’s interface and experience.

Although it is sometimes difficult to see the importance of testing, it shouldn’t be measured purely at cost and time, preferably in the high value that it brings.

If you’re ready with your Product, in hand. Trust us and give it a try to test it with our Independent Testing Team So once you ensure that the product doesn’t have any unidentified Functional, Performance or Security defects. You will be best at every cost. At Osmosys, we also provide end to end solutions for software product development, application development, Dynamics CRM customization, and cloud services.

What are you waiting for? Contact Osmosys now, your trustable software service provider.