Fix - No Bootable Device Error in Acer laptop

Hello folks. I'm going to write about a strange and a scary problem I faced yesterday with my new laptop (hope this will help someone).

I recently got an Acer Aspire E 15 laptop and I have been enjoying working on it until last night (I still do). It's one of those laptops which you can buy for a reasonable price with some good performance. However, last night, my laptop suddenly turned off while I was working. I thought it was because my battery was empty. I switched it on again, and saw this scary message saying "No Bootable Device" with an icon of a magnifying glass. (need not to say, I was doing some important work and I had not commit my work. I thought my hard disk was gone.)

Luckily, I found some easy solutions to fix it. Here's what you have to do if you get this error.

  1.  Restart your laptop.
  2.  As soon as you see the "acer" logo coming on the screen, press F2 key. 
  3.  It will take you to the bios screen. Now, from the bios settings, change your boot method from UEFI to Legacy. (If you are lucky, you will have this option).
  4.  Press F10 to save and exit bios. Now your laptop will boot normally.

That's it guys. This is the method which worked for me. This might not work for some people because this could happen for any reason, like a hard disk failure. If your had disk is damaged, this method won't obviously fix it :) But you can always try.

I also found that disconnecting and reconnecting the hard disk cable also worked for some people. Please let us know if this helped you. Don't forget to mention any other methods you know in the comments below.

DBeaver 4.0.8 Cannot insert new record in an empty table.

Note: This issue has been fixed in DBeaver 4.1 :)\

I've been using DBeaver for a while to work on some Postgres databases (because PgAdmin 4 sucks!) and I found this tool to be really awesome so far. However, as we know, not everything is perfect, and I found a little bug in DBeaver which is, that you cannot add a new record by clicking on the small plus (+) sign on the grid view. This is not working only on new / empty tables. If the table has at least one record, this works.

However, you are not left alone helpless in this case. There's a small workaround to overcome the issue. This is how to insert data into a new empty table without writing a sql query.

All you have to do it press and hold the "Shift" key while cliking on that green plus sign. Then DBeaver will add a new row as usual :) That's simple, isn't it?

I hope this will be useful to someone. Please don't forget to leave a comment if you know any other work around to this :)

Solve Ubuntu Error mounting windows partition status 14: The disk contains an unclean file system

Hello guys, here is another issue I faced today with Ubuntu 16.04. I have a laptop which runs Windows 10 and Ubuntu 16.04 on dual boot. Sometimes I have to switch between the two systems depending on the project I work. So it's very usual that I switch between them a few times in some days.

If you do the same, you may have already got this error, or at some point you will get this error when you try to mount a partition that you use with Windows and Ubuntu both. I'll show you how to fix this easily.

Error Details:

Error mounting /dev/sda2 at /media/nimeshka/6E86FACC86FA93B5: Command-line `mount -t "ntfs" -o "uhelper=udisks2,nodev,nosuid,uid=1000,gid=1000" "/dev/sda2" "/media/nimeshka/6E86FACC86FA93B5"' exited with non-zero exit status 14: The disk contains an unclean file system (0, 0).
Metadata kept in Windows cache, refused to mount.
Failed to mount '/dev/sda2': Operation not permitted
The NTFS partition is in an unsafe state. Please resume and shutdown
Windows fully (no hibernation or fast restarting), or mount the volume
read-only with the 'ro' mount option.

You get this error and you are unable to mount the partition. However, Ubuntu lets you mount the partition in a read-only mode which may be enough sometimes, but it's not a real solution to this. Before diving into fixing the problem, let's look closely at the error message once again. If you read it carefully, you will see that Ubuntu reports the error in a clear and a concise way. Towards the end of the error message, you can see it states "Please resume and shutdown Windows fully (no hibernation or fast restarting)". That basically gives you a hint on the solution. It says that Windows has not been fully shutdown, hence Ubuntu is unable to mount it. So the problem is really in Windows, not in Ubuntu.

You may wonder that you didn't hibernate Windows, then how could this happen? Yeah, it happens because with recent versions of Windows, they have introduced some new features to speed up the booting process, known as "Fast Startup" in Windows 10 and "Fast Boot" in Windows 8. It's something very similar to (or almost same as) hibernate option you had with previous Windows versions.

To fix this problem, you need to login back to your Windows OS and shutdown it properly. To do that, please follow these steps.
  1. open a command prompt with administration privileges. (To open command prompt with admin privileges, right click command prompt in the start menu and choose "Run as administrator" option).
  2.  Run the following command:
  1.  shutdown /s 
  1. Now login back to Ubuntu to see that you can mount your drives back :)
That's it guys. I hope this wll help you. Please share this with your friends in G+, Facebook and Twitter if you think this will be helpful to them as well! Also leave a comment to give any feedback.

GIT: Display modified files in the last 'n' commits.

It's a very common thing that a developer usually commits his / her work multiple times in a day. You make changes in your branch, commit them locally, and sometimes at the end of the day, you push them to the remote repository. If you want to see the changes in your last commit, you simply run the command:

git show

But what if you only want to see the names of the files which were changed? Okay, you run the same command with the --name-only parameter. i.e.

git show --name-only

Then what if you want to see all the files which were changed today? If you have made 3 commits today, then you can run the following command to view all the files which got affected across all your commits. To do this, you have to pass the -n parameter with the number of commits you want to view.

git show -n 3 --name-only

Okay, here's another useful tip. What if you want to see the files changed in a particular commit? For that, you only have to pass the commit id.

 git show --name-only 4adf9baa857c885g5a40518ccec68961ae08cc69
And, what if you want to see the files changed in another commit along with these? To do that, again you have to pass the other commit id, as shown below.

git show --name-only 4adf9baa857c885g5a40518ccec68961ae08cc69 7bdf8bac852c865f4a40518cbec689613e07c269

That's it. I hope this will be helpful to someone :) Please don't forget to leave a comment if you know a better way or if this really helped you. You can also share this with your friends in Google+, Facebook and Twitter!

Fix HTTP Error 500 php-cgi.exe - The FastCGI process exited unexpectedly

Today I had to install IIS in my dev laptop to do some bug fixes in an old web application written with PHP 5.5. I enabled the FastCGI module in IIS and loaded the web page in the browser. But it didn't work and it kept giving me this error. It didn't explicitly mention what caused the error. So it was a bit difficult for me to find a solution to this. However finally I found a fix to this and thought I should share it in my blog so it will help someone in the future (of course, only if you had to setup IIS to work with PHP). I used PHP 5.5.3.

This is the error I received:

HTTP Error 500.0 - Internal Server Error

php-cgi.exe - The FastCGI process exited unexpectedly

Detailed Error Information
Module FastCgiModule
Notification ExecuteRequestHandler
Handler PHP
Error Code 0xc0000135 

If you get this error, the first thing you need to check is whether you have the right Visual C++ runtime package installed in your PC. If not, download and install it right away. It will surely fix your issue :)

As a help I will link to the Visual C++ package that helped me (This worked with PHP 5.5.3). If it doesn't help you, I guess you need to find the right version to download. I'll add some more links here so you can find and download it from the Microsoft website.

If you have PHP 5.5.x, Microsoft Visual C++ Redistributable 2012 package is what you need to install. Here is the link to that ->

Here is a list of other Visual C++ packages with download links from Microsoft. Make sure to download the file that suits your system architecture (32 bit / 64 bit). With 5.5, you have to download the x86 version anyway because PHP is running on 32 bit, not 64. :)

Microsoft Visual C++ Redistributable 2015

Microsoft Visual C++ Redistributable 2013

Microsoft Visual C++ Redistributable 2012

Microsoft Visual C++ Redistributable 2010

Microsoft Visual C++ Redistributable 2008

Microsoft Visual C++ Redistributable 2005

Please do not forget to share this post with your friends in Facebook, Google+ or Twitter if you think this will be helpful to someone :) You can also leave a comment if you have any problems.

How to connect LAN in VirtualBox Ubuntu

It's 2017 and I haven't written anything in my blog this year. That's amazing. The main reason why I was away from the blog was because I was trying YouTube videos instead of blog posts and it seems they are working really well. You can find my YouTube channel here. Please feel free to subscribe and keep in touch with my new updates.

Anyway I feel I should update the blog constantly, so today I share something I learnt recently. How to connect to LAN in Virtualbox in Ubuntu? Yesterday I was trying to access a shared drive in my Local area network and I found that it's really difficult to access them using my Ubuntu PC even with Samba. I wasn't sure why I couldn't access the shared drive, it was probably due to some password issues. So I tried an alternative way to do that. I have a Windows installation running inside my Ubuntu PC using Virtualbox and I thought it would be great if I can access the network through my Virtual PC.

But I learnt that by default, when you open your VirtualBox guest OS, you are not connected to your Local area network. Instead, it only shows your host PC, and a common drive between the Host and the virtual machine. To access the LAN, you have to change a few settings and this is how to do it in a step by step way.

  1.  First off, you have to shut down your virtual pc in Virtualbox. 
  2.  Then right click on the Virtual machine you want to connect, and select "Settings".
  3.  In the settings window, go to Network section and click on the "Adaptar 1" tab.
  4.  Now you should see that "Enable Network Adapter" option is checked. If not, check that box as shown in the image. 
  5.  Then from the "Attached to" dropdown list, select "Bridged Adapter".
  6.  From the "Name" dropdown menu, select "eth0" or the network adapter you want to connect.
  7. Click the OK button and start your VM.
  8. Now you should be able to see your LAN computers :)

Image related to Step 03.

How to connect LAN in VirtualBox in Ubuntu

That's it friends. I have made a video explaining how to do this. If these steps aren't clear to you, please check this video.

How to connect LAN in VirtualBox Ubuntu

Be kind to share this with your friends in Facebook, Twitter or Google+ if you think this will be useful to them :) Also please feel free to leave a comment and let me know what you think.

Wikitude License key is missing watermark.

I've been recently working on an experimental project which involves augmented reality. If you have played a game like Pokemon Go, you probably already know what's augmented reality, and I'm not here to talk about it. I was trying to embed an augmented reality experience into one of our existing apps written as a Hybrid mobile app with Cordova / Phonegap. Therefore I used Wikitude to experiment, as it already has a Cordova plugin. Wikitude offers many plugins for various platforms and it's really easy to integrate as well. But it's not free.

Wikitude offers an unlimited trial account with all it's features, but with a watermark on the viewfinder (or the camera view). You can use the trial account while you develop and once you are satisfied, you can buy the SDK. But it costs a lot ;) It wasn't a problem to me as I was experimenting and trying on various solutions to integrate into our app. You will get a trial license key when you register with Wikitude to download their SDK. You can then use that key inside your app to validate your purchase.

One of the first problems I had using Wikitude was that even though I entered the license key, it kept showing me a huge watermark across the camera saying "License key is missing". Wikitude will not work until you enter a valid license key. So my first task was to solve this issue because without it, I wasn't able to do anything. At first I was a little frustrated because I did exactly as they have explained in their documentation and still it kept me saying the License key was missing. Then my first guess was my trial key may be invalid. But luckily, They had no option to renew it in their website. So I knew it wasn't the case. Then I kept digging a little more and found out the issue.

Here is the cause of error:
Even though you enter the license key into the WikitudePlugin.js located in ~/<your-app>/plugins/com.wikitude.phonegap.WikitudePlugin/www/ folder, the license key is not copied over to the plugin file after the build. What that means is,check the following location:


You have another WikitudePlugin.js file in the above location. You have to open this file and enter your license key again here as well. Remember not to replace this with the WikitudePlugin.js file in your plugins folder as it will not fix this. It will only make your app to stop working. So just open this Javascript file and paste your license key into the same place.

That will fix your problem by identifying your license key and remove the huge watermark covering your camera view.

I hope this post will be helpful to someone. So please don't forget to leave a comment and tell me if this helped you :) If you think this post will be useful to your friends, be kind to share with them on Facebook, Twitter and Google+.

q parameter error for listUsersDrafts in Google API PHP client

Hello friends, I'm here with another blog post, third one in this week. This is probably the first time ever I'm posting three posts in one week. Great! This blog seems going well and I thought of coming back here and update this regularly to keep it stuffed with useful articles. Alright, This time I got something to tell you about the Google's php client library for PHP, and a minor problem I had while using it with Gmail API. The library is still in Beta status as they have mentioned, so of course it could have missed many things (It doesn't seem to have a proper documentation yet).

Today morning I was working on an interesting task. It was to login to one's Gmail account and get their details like Inbox, Labels, Drafts and save it in another place. That was interesting. But when I was trying to get some particular drafts by searching (using the API), I got an error in my script.

The Gmail API provides the facility to query the drafts list using a keyword and get the filtered result. This is done by passing an optional parameter "q" with the search query in the API request. This is documented in the Gmail API reference page.

So after seeing this, I tried to pass the "q" parameter in my API request using the PHP client library, but my script failed giving an error. The error was "(list): unknown parameter 'q'". I understood that the library is probably missing the support for this parameter. I dug a little bit into the client library and found my assumption was correct. Luckily this was easy to fix. All I had to do was edit one library file and add a few lines to it.

Although this fix worked and solved my problem, this is not something I would normally do. Editing core files of a library is not recommended mainly because when you update the library, your changes might disappear and the problems will arise again. But in this case, I proceeded with it because this task was not a part of a serious project and I did it for myself because I was bored ;) If you would prefer to go with this method, here is how I fixed it.

First let's see how we call the Gmail API using the client library to get the user's drafts. I hope you know how to authenticate and get the draft's list already. Here I'm focusing only on the q parameter and filtering the drafts list. So only the necessary lines of codes are shown below.

CASE 01: This is how to list all drafts.

$draftsResponse = $service->users_drafts->listUsersDrafts($userId);

This should work really fine.

CASE 02: Searching and filtering drafts using q parameter.

  $params = array(
    'q' => "search keyword"

$draftsResponse = $service->users_drafts->listUsersDrafts($userId, $params);

Here we pass an optional parameter $params, which is an array having the key "q" with our query to the listUsersDrafts() method. If you use the client library downloaded as of today, it will give you an error because listUsersDrafts() method does not know any option as q. So in order to fix this, all you have to do is;

Open file google-api-php-client/src/Google/Service/Gmail.php and look for this block.

    $this->users_drafts = new Google_Service_Gmail_UsersDrafts_Resource(
            ,'list' => array(
              'path' => '{userId}/drafts',
              'httpMethod' => 'GET',
              'parameters' => array(
                'userId' => array(
                  'location' => 'path',
                  'type' => 'string',
                  'required' => true,
                'maxResults' => array(
                  'location' => 'query',
                  'type' => 'integer',
                'pageToken' => array(
                  'location' => 'query',
                  'type' => 'string',

It should look like this. Locate the above code block inside. Now we need only need to add additional q parameter here. Then it will look like this one.      

            ,'list' => array(
              'path' => '{userId}/drafts',
              'httpMethod' => 'GET',
              'parameters' => array(
                'userId' => array(
                  'location' => 'path',
                  'type' => 'string',
                  'required' => true,
                'maxResults' => array(
                  'location' => 'query',
                  'type' => 'integer',
                'pageToken' => array(
                  'location' => 'query',
                  'type' => 'string',
                'q' => array(
                  'location' => 'query',
                  'type' => 'string',

That's it!! now check your script again and it will work without giving you any errors and it will filter the drafts using the given keyword :) I've already created an issue in Google Client Library GitHub project and created a pull request with this fix. Hopefully they will add this in a future release. If they do not accept it, you can still use this method.

I hope this will help someone. Please do not forget to share this with your friends in Google+, Facebook and Twitter etc if you think this will be helpful to someone you know.!! Feel to leave a comment and let me know what you think about my article.

SocialEngine installation MySQL blank password error.

Today I'm going to share a useful tip with you I found recently. This is the second blog post I'm writing in this week, and it feels good to be active again with the blog after a long time. Anyway, without further ado let's get into the topic.

During last week I helped installing SocialEngine for one of my clients in his local computer (Maybe he wanted a development version of it). If you don't know what's SocialEngine, it's a social networking script written in PHP. It's not free, but it's quite cheap and it's worth the money you spend if you want to create a good feature rich social network. The installation process is really easy and even a non technical person can handle it with ease as it's straightforward. You just need to provide your database credentials and it installs it automatically. But it's not that true always! You might need to change file permissions for a few directories and files, and during the setup, it asks for your database credentials. So you might need to know a few things about "how the things work" ;)

That's why I had to be in that scenario. My client had installed MySQL in his local computer and as we all know, the default login credentials for a MySQL installation is "root" user and a blank password (unless you change it during installation.).

Now, the problem was SocialEngine did not accept blank passwords for database login details during the installation process. Please see the below image. It gives you an error as shown below. My client was frustrated and looking for a way to fix this. He didn't want to change the MySQL root password just because of this. He had a few other projects using this same login, and I guess he did not want to spend his time changing the login details everywhere. Fair enough!!

I checked the source code for the SocialEngine and found out that, by changing a small line of code you can remove this blank password validation and install it using the default mysql login details. Here's how to do it if you ever face this same problem.

Kindly note this fix is only for a specific version of Social Engine. I'm not certain if this will be the same in future releases, or it is the same in old versions of SocialEngine. I'm writing this specific to the version of SocialEngine script I received from my client. This method should definitely work if you are using the version 4.8.7. If not, please contact me or leave a comment here, I can help you with it.

This installation form validation is located in the "install/forms/DbInfo.php" file. Open that file in any code editor or a text editor you prefer, and go to the line 100 and 101. It will be something similar to this.

097.    // init password
098.    $this->addElement('Password', 'password', array(
099.      'label' => 'MySQL Password:',
100.      'required' => true,
101.      'allowEmpty' => false,
102.      'validators' => array(
103.        array('NotEmpty', true),
104.      ),
105.    ));

Now if you check the line 100, it's to validate if the password field is filled in. Since we don't have a password, we must be able to submit it with a blank value. Therefore let's change this value from "true" to "false". Then in line 101, you see it asks whether to allow empty values, yes, of course we need to allow empty values because our password is empty. So let's make it "true".

That's it, now this should look like this;

100.      'required' => false,
101.      'allowEmpty' => true,

Now if you provide your mysql login details (with your blank password), it should submit the form without giving you any errors. One thing to note is that I'm not aware of earlier or latest versions of SocialEngine as I was only working with this version of it. So please let me know if this doesn't work for your version so I can update this.

I hope this will be helpful to someone in future and save his/her time. Please let me know what you think about this in a comment below, and please do not forget to share this with your friends in Google+, Facebook and twitter if you think this will be useful to them :)

Torrent Trackers List 2016 September and October

Torrent Tracker List 2016
Torrent trackers are very popular these days with the rise of torrent usage among the Internet users. I wrote one post last year giving you a great list of working torrent trackers. I received very good responses and thanks to that article from many users and still to this date I notice many visitors come to my blog to see the old list. Although many of the torrent trackers listed on that article are still working well, I understood the list is quite old and not up to date. Many of my readers asked me to provide a new working list. So I thought I should update the blog and add a new working torrent trackers list. Here is the best trackers list you can find in the Internet up to date. These are 100% working and a fresh list I made by my own research. This is the best working torrent trackers list as at September and October 2016. (List is there at the end of this article, scroll down)

Why I made this list?

I have found many torrent trackers in Internet listed by many websites. But as you have already experienced, many of the trackers are not working most of the times or they were taken down quick making them unusable. To overcome this problem, I thought I should keep a list of working torrent trackers with me which are updated monthly so I can have the best updated trackers always with me. As I always believe, If I have spent a lot of time to find something valuable, I don't want others to waste their time too. I simply share my findings with my readers so I make a great value of the time I spent by saving other's time. That is the main reason I create posts in my blog with the trackers list I found.

What are torrent trackers?

If you do not know what is a torrent tracker, you need to understand a few basic concepts of the peer to peer file sharing method. Torrents are a basic method to share files within a group of users. Torrent trackers are keeping the necessary information of torrents and peers. In order to download a file over a torrent network, you need other users to upload the file (which is referred as "seeding"). Sometimes you may find torrents which have very less number of peers or outdated peer information. So by using a torrent tracker, you can easily get more peers to your torrent download and increase the download speed and reduce the download time.

To add trackers to a torrent which the download is in progress, you can right click on the particular file in your torrent client and go to properties, then under the peers tab you can select the option "Add Trackers" to add a new tracker. But please remember these options change according the torrent client you are using. I often use Transmission in Ubuntu. I uploaded a video in my previous blog post and I'm adding it here as well so you can see and get an idea.

I have tested these trackers and I can guarantee them to work by the time I write this article. Please see the below image to see them. I tried these trackers on a torrent file which had 0 peers and I managed to get a few peers and downloaded the file. But you should understand that these trackers can go down anytime :)

 Torrent trackers working example

In this video you can see how to add trackers to your download in the Transmission bittorrent client in Ubuntu.

Some torrent clients allow you to add multiple trackers at once. So if it permits, you can directly copy the below list and paste it into the box to add them all.

Best working torrent tracker list as at 2016 September / October:







Please share this article with your friends in Google+, Facebook and Twitter if you think this will be useful to them! Also do not forget to leave a comment and let me know what you think about this post. It will help me to make more valuable posts similar to this in future. Mention if you know other working trackers too!!!