MySQL and PostgreSQL GUI tools

I am using Arch Linux, and recently there are some issues on MySQL Workbench and pgAdmin 4.

MySQL Workbench with the latest version 8.0.12 has issue to make connection through the SSH tunnelling. As a result, I have to downgrade to version 6.3.10. However, with the recent upgrade of icu package to 62.1, it breaks the MySQL Workbench 6.3.10. In order to solve this, I duplicate the following files,

cp libicudata.so.62 libicudata.so.61
cp libicui18n.so.62 libicui18n.so.61
cp libicuuc.so.62 libicuuc.so.61

So, it is a temporary solution until the package is fixed.

Then, for the PostgreSQL, I use pgAdmin. But again, with the recent upgrade of Python to version 3.7, which causes pgAdmin fails to start. I tried to run pgAdmin through Python 3.6 using virtualenv , but it doesn’t work. So, I have tried other solutions.

I tried Adminer. It depends on PHP and Apache server, similar to phpMyAdmin. However, it is less intuitive, compared to phpMyAdmin. Because Adminer doesn’t allow inline editing value.

So, I tried SQL Workbench/J. It requires Java and PostgreSQL JDBC. Once installed required package, it can work perfectly. Similar to Adminer, SQL Workbench/J can work with database other than PostgreSQL, such as MySQL.

 

Firefox Legacy version 56.0.2

The latest Firefox version 57 and above, a.k.a Firefox Quantum, it is fast, but… that is not what I need.

As a developer, I favoured Chromium more than Firefox. And I use Firefox mainly for downloading. The addon DownThemAll is the must. The greatest feature I love is the ability to highlight and download the selected hyperlinks as batch. And I can name the downloaded files by original filename or based on the text in HTML.

DownThemAll in Firefox 56
DownThemAll in Firefox 56

This is neither Google Chrome nor Firefox Quantum can do.

With Firefox Quantum, there is no more support for legacy addons. As a result, unless the addon developers update their project, nothing more we can do. We can either install other Firefox variants such as Firefox ESR, Waterfox, Palemoon, etc (as suggested by one of the DTA reviewers). In my opinion, with WebExtensions API, DTA developer may face some issues to develop for Quantum support.

I tried to install Firefox ESR (which is actually 52.5.0) in order to use DTA. However, it is extremely slower comparing to Firefox 56. When Firefox 54 was released, it was the best Firefox ever and it was really fast comparing to the older versions. Therefore, in order to use the latest Firefox that supports legacy addon, I choose to install Firefox 56 without removing the latest Firefox Quantum.

How to install older Firefox (for Linux only)?

  1. Use Google to search an older Firefox, you should get a URL like this: https://ftp.mozilla.org/pub/firefox/releases/56.0.2/
  2. Choose the link (directory) that matches your target machine, Windows 32-bit / 64-bit, Linux 32-bit / 64-bit, etc. Then choose a language that you prefer. For my case, I downloaded Firefox 56.0.2 for Linux 64-bit.
  3. Download and extract it to some location, such as /opt/firefox56.

Now, you should able to invoke Firefox 56 by (but don’t run it now)

/opt/firefox56/firefox

Run the above command will use the same profile as your default Firefox (if you installed Firefox Quantum).

Create another profile

Your Firefox profile should locate at ~/.mozilla/firefox/, named as xxxxx.profilename.

(NOTE: Suggest to make a backup of your default profile.)

Easiest way to create another profile for another version of Firefox,

  1. Create a new profile using command firefox -ProfileManager. Because this will update profile.ini as well.
  2. Exit Firefox Profile Manager.
  3. Locate to the directory of the profile, then delete all the files and directories within the profile, i.e, make it empty. (NOTE: Do not delete your default profile.)
  4. Copy all the files and directories of your default profile to the empty profile in step 3.
  5. Now you can run Firefox with the new profile, like /opt/firefox56/firefox -P profilename.

Create shortcut (application menu, aka desktop entries, for Linux only)

Because the Firefox we installed is just by extracting. There is no desktop entry file created. Therefore, we need to create our own desktop entry file. This can be done by creating a file as ~/.local/shared/applications/firefox-legacy.desktop.

The following is the content,

Name=Firefox Legacy
GenericName=Web Browser
Icon=firefox
Type=Application
Categories=Application;Network;
MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
Encoding=UTF-8
Exec=/opt/firefox56/firefox -P legacy %u
Terminal=false
MultipleArgs=false
StartupNotify=false
StartupWMClass=Firefox

where the /opt/firefox56/firefox -P legacy %u, with the legacy as the profile name. You can modify this line to your target profile name.

Then, restart your gnome-panel or whatever panel, it should generate this menu item named as Firefox Legacy. Now, you can run two different versions of Firefox simultaneously.

(Side note: WordPress with Markdown mode enabled is the best!)

Firefox or Chromium (software development)?

I was switching from Chromium to Firefox as my primary web browser recently. Then, I switched back to Chromium again.

Chrome was usually claimed that it consumes a lot of memory. And recent Firefox updates claim that it is faster and consumes less memory. That is why, I switched to Firefox. I agree that, it is much faster than before. However…

I faced a critical issue. One less important issue that I would like to mention is, Firefox does not support Google Hangout.

The critical issue I faced related to JavaScript. During the web development or even visit CircleCI (which I believe it has heavy usage of JavaScript), if the JavaScript has severe errors, whatever web browser you are using will stop respond or slow down. But, Chrome (Chromium I mean) deals the issue differently from Firefox. The whole computer will be slow down temporary (may be several minutes), then at the end, the page will be shown as “dead” and I can control over my computer again.

In the same condition, Firefox will expand the memory (possibly exponentially) due to the errors. Then the computer starts slowing down and stop respond until I do a hard reboot. Based on my observation, the memory grows and uses all the RAM. When the RAM is not available, the memory is immediately stored into the Swap. Because storing into the Swap, that is the hard drive, it is much slower for me to switch to a Terminal to kill Firefox. And even I successfully switch to a Terminal, typing the command and see the response takes approximately infinite time, yet the Swap memory usage keeps growing non-stop.

As a web developer, I prefer to use Chrome.

Prayer Clock GTK3

My first open source project, Prayer Clock, I moved from SourceForge to GitHub recently. Yeah! Everyone should git!!!

And today I just made some changes, and updated to GTK3.

With GTK 3, I removed the title bar. But not yet successfully moving the menu bar to the icon like Evince or Nautilus.

I plan to convert the right hand panel to WebKitGtk. But this will not be the priority yet.

Firefox or Chromium (Google Chrome)

Yes, again web browser. I am using Firefox. Only sometimes Chromium (Google Chrome). Mainly Firefox. If someone ask me, which one I choose, I definitely answer Firefox. But, if someone ask me, which one I prefer, then it will be difficult to answer.

Firstly, I would like to go through why I choose Firefox as my primary web browser.

Because of DownThemAll. There is no alternative extension in Google Chrome like DownThemAll. Why I like DownThemAll so much? I use DownThemAll with GreaseMonkey to download my favourite mangas (comics). This is something Google Chrome still cannot do it, based on my current knowledge. GreaseMonkey generates the links, right-click, then I DownThemAll.

Another two addons, DownloadHelper and FlashGot. Both of them allows me to download any online video or audio streaming. Google Chrome doesn’t have this type of extension.

Actually, all of these limitations of Google Chrome are because of extension API restriction. That is why, there is no similar replacement for DownThemAll, DownloadHelper and FlashGot. However, I wonder why there is no one uses NPAPI to build the similar extension in Google Chrome.

Next advantage of Firefox is the bookmarks. The best feature I like is the tagging feature. This help me to search my unorganised bookmarks easier. I know, Google Chrome uses a different approach to solve this problem. Google Chrome is more to cloud computing and searching algorithm, it solves the problem by using Google Bookmark search. This is something I don’t like, without internet connection, Google Chrome can done less thing than Firefox. (You might said, without internet connection, your web-browser can do nothing, yet I can said, I can still do the web development without proper internet connection, or manage my bookmarks when I don’t have internet connection.)

Then, if I definitely choose Firefox over Google Chrome, why do I need to post this blog? Sure, there is some beauty about Google Chrome which always makes me to consider to switch to it. Firstly, its interface is really clean and simple. The interface make me feel more to the webpage instead of web-browser. Firefox makes me feel that I am using Firefox; Google Chrome makes me feel that I am visiting the websites.

Secondly, for the developers, creating extension using Google Chrome is super easy comparing creating a Firefox addon. Firefox addon needs to follow a lot of convention and using XUL, which is not easy to learn (for me). It needs to create “chrome.manifest”, “install.rdf”, and so on. The documentation is also not very good (I personally feel).

Thirdly, Google Chrome has Chrome Web Store, this is something which Firefox lacks of. But even if there exists Mozilla Web Store, I will not prefer it, unless the Mozilla Web Store is a superset of Chrome Web Store, then I may like it.

Then, there are several other reasons, such as Google Chrome open and close is faster than Firefox. Though Firefox startup is far more better than its older version, it is still slower than Google Chrome. And if closing the Firefox, then you want to start the Firefox again, you need to wait a while. Besides that, enable or disable the addons needs to restart Firefox also. May be this is the price paid for the good addons like DownThemAll, FlashGot and DownloadHelper.

Managing contacts and calendar

I am always looking for a good solution (not a software, but a solution) to manage all my contacts and calendar. Actually I separate both of them, even they are under PIM (personal information management).

I was using an excel file to manage all my contacts. But we know, a file is different from an application, the interface is not usable, and I had the difficulty to find the contacts that I want.

Then, I tried to use EssentialPIM (freeware) to manage all my contacts. Yes, this is really a good solution, including the contacts with contact number only. Besides that, I can also use the task and calendar. However, the task and the calendar are not good enough to solve my problem, because I need to run EssentialPIM and check the calendar or task manually.

Because of the calendar and task problems, I switched to Rainlendar. This is very good, because it shows everything about calendar and task on the desktop. Useful to remind me to do the tasks.

The next problem of EssentialPIM is the email. Since it is used for only contacts, when I want to email, I need to run it, copy the email address, and paste it. These are exhaustive, wasteful, and boring actions. Why don’t I switch to Thunderbird for all the contacts including email?

Now, since I have multiple computers, syncing is a big problem. Rainlendar’s calendar can be synced easily, but Thunderbird address book is different. So, to solve the syncing problem, the best way is using online service. Thus, to solve the calendar syncing problem, finally I use the Google Calendar. It is too good, because it can send email to remind the uncompleted task. To make me access Google Calendar more conveniently, I installed Lightning add-on for Thunderbird, and load the Google Calendar. Besides that, I use the Cache feature of Lightning, so that even I cannot access internet, I can still load the calendar from the cache. This is the best solution for me currently.

Now, the calendar is solved, but the contacts is the next problem. Because I didn’t manage the contacts online, thus all the contacts in the accounts like Google and Yahoo are very messy. I normally manage my contacts offline. Calendar can be shared among the applications because of the standard iCalendar format. But contacts are different. There are Google format CSV, Thunderbird LDIF, Outlook CSV, vCard, etc. This makes the import and export very difficult to preserve all the information.

I tried to use Thunderbird Google Contacts add-on to sync the contacts with Google. However, the result is not very satisfying. I cannot sync all the contacts with Google. Finally, I tried to use Zindus add-on for Thunderbird. Yes, this can sync very well, all the contacts are syncing correctly. As a result, I manage the contacts with Google. The best feature I like about Google is merge the duplicated contacts. Now, I can sync the contacts and calendar with all my devices.

Using Python as the most powerful calculator

Once I was looking for “expression calculator”. The expression calculator is different from normal calculator like calc.exe, which cannot use variable freely as algebra. But the expression calculator, we can predefine a variable with a value, then evaluate the variables in algebraic expression. It is very useful. My favourite expression calculator is SpeedCrunch.

Then, recently, I want to test a math function in SpeedCrunch, but this is impossible, since expression calculator can only define the variable, but not define a function. I remembered the title of Python Tutorial, “Using Python as a Calculator“. Yes, expression calculator, with ability to define function, then Python will be the one.

So, I tried Python, writing the function in the interactive console, easy as it is. Not only that, one can do the fractions and also calculating the date time using Python. So, Python is now my #1 expression calculator. The only drawback I found is that Python does not have the mathematic constants as SpeedCrunch. That means, one needs to find the constants, and also the the unit conversion by our own.

Besides that, to use math functions such as logarithm and trigonometry functions, one must import the math module.

from math import *
from fractions import Fraction #to use the fraction
from datetime import *

GNOME Commander for Ubuntu

When I was using Windows to manage my files, I always open a lot of windows to move my files. Even the window is already open, I will open a new window.  Because it is difficult for me to find the opened windows. And my taskbar will full of tasks.

So, I tried to find a Windows Explorer replacement. Tried all the best free file managers by Gizmo’s Freeware. Then, only FreeCommander fulfils my needs. There is no need to open a lot of windows.

Moving to Ubuntu, Nautilus is the default file manager of Ubuntu. I face the same problem as using Windows. So, the software similar to FreeCommander on GNOME based OS is GNOME Commander. It is very useful.

However, I just found that delete files using GNOME Commander does not move the file to Trash. This is a drawback.

Chromium is really good in netbook

Compare to the Firefox, I prefer to run Chromium in my netbook. This is because the screen of the netbook is small, and the resolution is low. Using Firefox, the toolbars and file menu already occupies half of the screen. I think Firefox 4.0 will solve my problem.

Then, using Firefox on the netbook with Ubuntu, playing Castle Age will make Firefox slow down. May be the reason is the netbook memory is smaller than normal laptop.

However, I am still using Firefox on Ubuntu. Because of the powerful extensions on Firefox, such as DownThemAll, FlashGot, etc.

My favourite Thunderbird add-ons

Since I tried on Evolution of Ubuntu, an email client just like Microsoft Outlook, with PIM (Personal Information Manager) features, allows using IMAP, and allows synchronization. I really like it. So I tried to install Evolution for Windows. However, Evolution for Windows cannot work properly on Windows 7. Then, I need to switch back to Thunderbird. Since I like the feature of PIM and the synchronization with GMail and Google Calendar, I have installed following add-ons: