Solved – error while loading shared libraries: Anydesk on Ubuntu 22.04 LTS

After successfully upgrading from Ubuntu 20.04 LTS to 22.04 LTS, most of the applications are working perfectly. But, some of the applications behave unusually. Such as, I tried to run the Anydesk application, but it doesn’t launch/start. when I checked the status service, the AnyDesk service was failed and the reason for failing is mentioned in the below error message,

anydesk: error while loading shared libraries: cannot open shared object file: No such file or directory is a library used for text layout and rendering the text. Most of the work on Pango-1.0 was done using the GTK+ widget toolkit as a test platform.

So, I ran the command to install it using the apt as follows,

apt install libpangox-1.0-0

But, it gives me the following error,

Package libpangox-1.0-0 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

So, from that we can understand that, can’t be installed from apt or apt-get. We need to install it manually.

Use the following steps to install manually,

Step 1. Download the libpangox-1.0 package


Step2: Install the package using apt

sudo apt install ./libpangox-1.0-0_0.0.2-5.1_amd64.deb

Step3: Restart the AnyDesk service

sudo service anydesk restart

After these steps, if you check the AnyDesk service status, it will show active (running).

What is Middleware and how to create one in Laravel?

It’s best to envision middleware as a series of “layers” for HTTP requests that must pass through before they hit your application. Each layer can examine the request and even reject it entirely.

Middleware provides a convenient mechanism for inspecting and filtering HTTP requests entering your application. It’s best to envision middleware as a series of “layers” for HTTP requests that must pass through before they hit your application. Each layer can examine the request and even reject it entirely.

For example, Laravel includes a middleware that verifies the authenticity of the user of your application. If the user is not authenticated, the middleware will redirect the user to your application’s login screen. However, if the user is authenticated, the middleware will allow the request to proceed further into the application.

To perform different tasks, we can develop many middlewares besides authentication. For example, a logging middleware might log all incoming requests to your application. 

Laravel framework has included many middlewares, including middleware for authentication and CSRF protection. All of these middlewares are located in the app/Http/Middleware directory.

To create a middleware, we can use the following command,

php artisan make:middleware <middleware-name>

For example, if we want to create a middleware for checking transactions, we can run the following command,

php artisan make:middleware CheckTransaction

 After successful execution of the command, a middleware class will be created under the app/Http/Middleware directory.

In this class, we can define methods to check transactions. If the transaction is not completed, we can redirect the user back to the failed transaction page. However, on the successful transactions, we can allow users to proceed to the next page.

namespace App\Http\Middleware;
use Closure;
class CheckTransaction
     * Handle an incoming request.
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
    public function handle($request, Closure $next)
        if ($request->input('status') !== 'completed') {
            return redirect('transaction-failed');
        return $next($request);

As you can see, if the transaction status does not set to “completed”, the middleware will return an HTTP redirect to the client; otherwise, the request will be passed further into the application.

To pass the request deeper into the application (allowing the middleware to “pass”), you should call the $next callback with the $request.

Geocoding with Python – Convert any address to a geographic location

Learn how to work with geocoding APIs to receive location data from addresses and plot maps of your customer’s location.

Most of the time, datasets are incomplete and often require pre-processing to make them usable. Imagine, We have some datasets with only an address column without latitude and longitude columns, and we want to represent this data geographically. To do that, we need to add geographic information to these data. These cannot be possible manually. We have to create a script to convert all those addresses to geographic information – Latitude and Longitude – to map their locations, which is known as Geocoding.

Geocoding is the computational process of transforming a physical address description to a location on the Earth’s surface (spatial representation in numerical coordinates)


In this article, I will show you how to perform geocoding in Python with the help of Geopy library. Geopy has different Geocoding services that you can choose from, including Google Maps, ArcGIS, AzureMaps, Bing, etc. Some of them require API keys, while others can be accessed freely.

To perform geocoding, we need to install the following Geopy library using pip,

pip install geopy

Geocoding Single Address

In this example, we use Nominatim Geocoding service, which is built on top of OpenStreetMap data.

Let us Geocode a single address, the Taj Mahal in Agra, India.

locator = Nominatim(user_agent="myGeocoder")
location = locator.geocode("Taj Mahal, Agra, India")

First line of the above code will create locator that holds the Geocoding service, Nominatim. In second line, we call geocode method of the locator service and pass any address to it, in this example, the Taj Mahal address.

print("Latitude = {}, Longitude = {}".format(location.latitude, location.longitude))

Above line will print out the coordinates of the location we have created.

Latitude = 48.85614465, Longitude = 2.29782039332223

That’s it.

So, the complete code will look like this,

import geopy
from geopy.geocoders import Nominatim
from geopy.extra.rate_limiter import RateLimiter

locator = Nominatim(user_agent="myGeocoder")
geocode = RateLimiter(locator.geocode, min_delay_seconds=1)

address = "Taj Mahal, Agra, India"
location = locator.geocode(address)

print("Latitude = {}, Longitude = {}".format(location.latitude, location.longitude))

Now, try some different addresses of your own.

Internet Banking – The Pros And Cons

Over the last decade, millions of people in India have adopted online banking as their preferred method of conducting financial transactions. This way of banking has become quite popular because to the convenience with which one can monitor their account, make payments online, and transfer money between accounts. This is especially true for Indians who are always pressed for time to physically visit the bank.

Online banking also has several non-transactional functions that are very useful. Despite its convenience, however, this way of banking has a few drawbacks. These must be understood to secure your funds and avoid issues in the future.

Key Benefits of Internet Banking

Customers who choose internet banking over traditional branch office visits are eligible for different benefits.


Technology has made it extremely simple for both the bank and the customer to access many services online. Financial planning capabilities, functional budgeting and forecasting tools, loan calculators, investment analysis tools, and equity trading platforms are among the services provided. These are available on the bank’s website as simple applications. Furthermore, most banks offer online tax forms and tax preparation services.


Convinience is the most promising advantage that outweighs any shortcomings of internet banking. Making transactions and payments at the click of a button from the comfort of your own home or office is a convenience that no one wants to give up. Keeping track of your accounts via the internet is becoming faster and more convenient than going to the bank. Even non-transactional services, such as ordering cheque-books online, updating accounts, enquiring about interest rates on various financial products, and so on, are much easier to access via the internet.


In recent years, internet banking has taken a stride forward with the evolution of mobile internet banking. Internet banking provides the consumer with unrestricted mobility, allowing you to conduct financial transactions even when on the move.

Another significant advantage of internet banking is that it is environmentally friendly. It saves paper and reduces pollution by eliminating the need for individuals to travel physically and emitting no emissions.

Better Rates

Banks stand to benefit from the adoption of internet banking because it requires less physical effort on their part. The requirement to expand office space and hire more employees to deal with clients is reduced drastically. The banks benefit financially as a result of this. Also, a part of the savings can be passed on to consumers by higher deposit rates and lower lending rates. To encourage internet banking, most banks provide no-deposit or low-deposit accounts. They also have reduced penalties for taking money out of Fixed Deposits early.

Drawbacks of Internet Banking

However, the current trend of exclusively using the online mode has a few pitfalls. This may prove costly in the long run unless guarded against from the beginning.


Security is the most serious flaw in the internet banking method, and you must avoid it at all costs. Even though your account is protected by a variety of sophisticated encryption technologies, there is always the risk of hacking by criminal forces in the cyber world.

On the internet, hacker attacks, phishing, malware, and other forms of unauthorized behaviour are all too frequent. If you only use the internet for banking, identity theft is another major risk. To combat identity theft, most banks have made it essential to post scanned copies of approved checks online. When creating an account and before using online banking services, you should review the bank’s security rules and precautions.

Online banking is a significant move in the right direction as far as the convenience of the customer as well as the banker is concerned. But it must be applied with adequate precaution to avoid falling prey to unscrupulous elements scouring the internet.


Online transactions take a toll on the relationship with the banker which the traditional visit to the branch office used to foster. Personal relationships with the staff at the banks come in handy when requesting faster loan approvals or a special service which may no longer be available to the public. The manager has many discretionary powers. These include waiving penal interest or service fees. Additionally, personal contact also meant that the banker would provide essential financial advice and insights which are beneficial to the customer.

Complex Transactions

There are many complex transactions which cannot be sorted out unless there is a face to face discussion with the manager. This is not possible through internet banking. Solving specific issues and complaints requires a physical visit to the bank and cannot be achieved through the internet. Online communication is neither clear nor specific enough to help resolve many complex service issues. Certain services such as notarisation and bank signature guarantees cannot be accomplished online.

SMTP errors and reply codes

After execution of every request, SMTP server may return a particular message with some code. The problem is that it will generally be very cryptic, like “550 Requested action not taken: mailbox unavailable” or “421 Try again later”.

Unfortunately, different servers sometimes use these codes in a different way, making the whole thing even more complicated… Anyhow, the most critical series of error messages is the 5xx one, and especially the ones from 550 to 559. In particular, you will probably get a lot of 550 SMTP error codes – that is, a problem that concerns the recipient’s email address.

After execution of every request, SMTP server may return a particular message with some code. The problem is that it will generally be very cryptic, like “550 Requested action not taken: mailbox unavailable” or “421 Try again later”.

First of all: not every code is an error. Sometimes it’s just a response containing a detail about the SMTP server or an answer to a command.

Secondly: every code consist of three digits, and each conveys a particular information.

  • The first one defines whether the server has accepted the command, fulfilled an action, run into a temporary issue, encountered an error etc;
  • The second and the third one refine the description further, stating if there’s been a syntactic problem, or a connection trouble etc.

Unfortunately, different servers sometimes use these codes in a different way, making the whole thing even more complicated… Anyhow, the most critical series of error messages is the 5xx one, and especially the ones from 550 to 559. In particular, you will probably get a lot of 550 SMTP error codes – that is, a problem that concerns the recipient’s email address.

Finally, remember that it’s much easier to deal with these error codes if you choose to rely on a professional SMTP server that will help you solve any issue.

And here’s a list of the main SMTP response codes, with description and an action/guideline to solve it.





The server is unable to connect.

Try to change the server’s name (maybe it was spelt incorrectly) or the connection port.


Connection refused or inability to open an SMTP stream.

This error normally refers to a connection issue with the remote SMTP server, depending on firewalls or misspelled domains. Double-check all the configurations and in case ask your provider.


System status message or help reply.

It comes with more information about the server.


A response to the HELP command.

It contains information about your particular server, normally pointing to a FAQ page.


The server is ready.

It’s just a welcome message. Just read it and be happy that everything is working (so far)!


The server is closing its transmission channel. It can come with side messages like “Goodbye” or “Closing connection”.

The mailing session is going to end, which simply means that all messages have been processed.


Its typical side message is “Requested mail action okay completed”: meaning that the server has transmitted a message.

The oppsite of an error: everything has worked and your email has been delivered.


“User not local will forward”: the recipient’s account is not on the present server, so it will be relayed to another.

It’s a normal transfer action.


The server cannot verify the user, but it will try to deliver the message anyway.

The recipient’s email account is valid, but not verifiable. Normally the server relays the message to another one that will be able to check it.


The side message can be very cryptic (“Start mail input end <CRLF>.<CRLF>”). It’s the typical response to the DATA command.

The server has received the “From” and “To” details of the email, and is ready to get the body message.


“Timeout connection problem”: there have been issues during the message transfer.

This error message is produced only by GroupWise servers. Either your email has been blocked by the recipient’s firewall, or there’s a hardware problem. Check with your provider.


The service is unavailable due to a connection problem: it may refer to an exceeded limit of simultaneous connections, or a more general temporary problem.

The server (yours or the recipient’s) is not available at the moment, so the dispatch will be tried again later.


The recipient’s mailbox has exceeded its storage limit.

Best is to contact contact the user via another channel to alert him and ask to create some free room in his mailbox.


Not enough space on the disk, or an “out of memory” condition due to a file overload.

This error may depend on too many messages sent to a particular domain. You should try again sending smaller sets of emails instead of one big mail-out.


Typical side-message: “The recipient’s Exchange Server incoming mail queue has been stopped”.

It’s a Microsoft Exchange Server’s SMTP error code. You should contact it to get more information: generally it’s due to a connection problem.


The recipient’s server is not responding.

There’s an issue with the user’s incoming server: yours will try again to contact it.


The connection was dropped during the transmission.

A typical network connection problem, probably due to your router: check it immediately.


The maximum hop count was exceeded for the message: an internal loop has occurred.

Ask your SMTP provider to verify what has happened.


Your outgoing message timed out because of issues concerning the incoming server.

This happens generally when you exceeded your server’s limit of number of recipients for a message. Try to send it again segmenting the list in different parts.


A routing error.

Like error 432, it’s related only to Microsoft Exchange. Use other routing method.


“Requested action not taken – The user’s mailbox is unavailable”. The mailbox has been corrupted or placed on an offline server, or your email hasn’t been accepted for IP problems or blacklisting.

The server will retry to mail the message again, after some time. Anyway, verify that is working on a reliable IP address.


“Requested action aborted – Local error in processing”. Your ISP’s server or the server that got a first relay from yours has encountered a connection problem.

It’s normally a transient error due to a message overload, but it can refer also to a rejection due to a remote antispam filter. If it keeps repeating, ask your SMTP provider to check the situation. (If you’re sending a large bulk email with a free one that can be a common issue).


Too many emails sent or too many recipients: more in general, a server storage limit exceeded.

Again, the typical cause is a message overload. Usually the next try will succeed: in case of problems on your server it will come with a side-message like “Out of memory”.


An error of your mail server, often due to an issue of the local anti-spam filter.

Contact your SMTP service provider to fix the situation.


A syntax error: the server couldn’t recognize the command.

It may be caused by a bad interaction of the server with your firewall or antivirus. Read carefully their instructions to solve it.


Another syntax error, not in the command but in its parameters or arguments.

In the majority of the times it’s due to an invalid email address, but it can also be associated with connection problems (and again, an issue concerning your antivirus settings).


The command is not implemented.

The command has not been activated yet on your own server. Contact your provider to know more about it.


The server has encountered a bad sequence of commands, or it requires an authentication.

In case of “bad sequence”, the server has pulled off its commands in a wrong order, usually because of a broken connection. If an authentication is needed, you should enter your username and password.


A command parameter is not implemented.

Like error 501, is a syntax problem; you should ask your provider.


Bad email address.

One of the addresses in your TO, CC or BBC line doesn’t exist. Check again your recipients’ accounts and correct any possible misspelling.


A DNS error: the host server for the recipient’s domain name cannot be found.

Check again all your recipients’ addresses: there will likely be an error in a domain name (like mail@domain.coom instead of


“Address type is incorrect”: another problem concerning address misspelling. In few cases, however, it’s related to an authentication issue.

Doublecheck your recipients’ addresses and correct any mistake. If everything’s ok and the error persists, then it’s caused by a configuration issue (simply, the server needs an authentication).


The total size of your mailing exceeds the recipient server’s limits.

Re-send your message splitting the list in smaller subsets.


Normally, an authentication problem. But sometimes it’s about the recipient’s server blacklisting yours, or an invalid email address.

Configure your settings providing a username+password authentication. If the error persists, check all your recipients’ addresses and if you’ve been blacklisted.


The recipient address rejected your message: normally, it’s an error caused by an anti-spam filter.

Your message has been detected and labeled as spam. You must ask the recipient to whitelist you.


It usually defines a non-existent email address on the remote side.

Though it can be returned also by the recipient’s firewall (or when the incoming server is down), the great majority of errors 550 simply tell that the recipient email address doesn’t exist. You should contact the recipient otherwise and get the right address.


“User not local or invalid address – Relay denied”. Meaning, if both your address and the recipient’s are not locally hosted by the server, a relay can be interrupted.

It’s a (not very clever) strategy to prevent spamming. You should contact your ISP and ask them to allow you as a certified sender. Of course, with a professional SMTP provider you won’t ever deal with this issue.


“Requested mail actions aborted – Exceeded storage allocation”: simply put, the recipient’s mailbox has exceeded its limits.

Try to send a lighter message: that usually happens when you dispatch emails with big attachments, so check them first.


“Requested action not taken – Mailbox name invalid”. That is, there’s an incorrect email address into the recipients line.

Check all the addresses in the TO, CC and BCC field. There should be an error or a misspelling somewhere.


This means that the transaction has failed. It’s a permanent error and the server will not try to send the message again.

The incoming server thinks that your email is spam, or your IP has been blacklisted. Check carefully if you ended up in some spam lists, or rely on a professional SMTP service that will nullify this problem.