Firefox Extension Recommendations for Privacy-Concerned Minimalists

Well, provided that you are really a privacy-concerned person, I assume that you have already treated Firefox as your default browser. Chrome, leading in the global market share, is notorious for net neutrality and constant privacy issues. Rather than being proprietary freeware like Chrome, Firefox is absolutely open-source. Meanwhile, as a minimalist, you may expect to have a simple life without excess stuff even if you have to occasionally pay some cost. And this article is targeting people like you, improving daily Internet experience via some wisely chosen extensions.

What are Firefox Extensions?

Different browsers nowadays use different terminology. In the context of Firefox, add-ons comprise extensions, themes, plugins (NPAPI such as deprecated Adobe Flash Player), dictionaries, search engines and language packs. And an extension per se is a piece of code changing browser behaviours to some extent and extending its functionality.

You can type about:addons in the address bar to manage your browser extensions.

And Firefox 67 is really a game changer for using extensions, according to its release notes,

any new extensions you add to the browser won’t work in Private Windows unless you allow this in the settings.

Selection Standards

Since there are so many extensions resembling one another on AMO, I prefer these satisfying as many as underlying standards listed below:

  • General-purpose, not just designed for specific websites (e.g., Steam Database, Enhanced Steam or Unpaywall)
  • Featured extensions, highlighted on AMO
  • Free, in terms of both gratis and libre
  • Maintained by individual developers or NGOs instead of commercial companies
  • With more custom options
  • Without any unnecessary logins, data uploading or functionality overlapping/conflicting (KISS principle)

Recommendation List

The list is divided into three individual sections: privacy & security, functionality enhancement and others. For each extension, will give you an overall score on a scale of 1 to 3 stars and a brief introduction based on my personal experience; I will compare it with its potential alternatives if available.

Privacy & Security

HTTPS Everywhere

Score: ★★★

HTTPS Everywhere, developed by EFF, enables HTTPS encryption automatically. It is also one of the default extensions for Tor Browser, which concentrates on anonymous communication. It works perfectly out of the box, without additional configurations.

uBlock Origin

Score: ★★★

According to the developer, uBlock Origin “is NOT just an ad blocker but a wide-spectrum blocker”. It is extremely memory/CPU-efficient and presets more than ten thousand filter lists, even with region/language-specific ones; unlike some of its competitors, it does not allow acceptable ads. In the meantime it contains several privacy-related options like preventing WebRTC leak.

Here are some well-known competitors:

  • µBlock: a unfriendly fork of uBlock Origin
  • AdBlock for Firefox and Adblock Plus: both featured extensions with acceptable ads by default; besides, Adblock for Firefox is a “honourware” according to its official help page, therefore technically you should pay as much as you can to support it
  • AdBlocker Ultimate: the one with relatively less filter lists than what uBlock Origin offers and constant pop-up donation notifications

Known issues:

  • It breaks all pages from Sina Blog and the only solution is to add it into Whitelist of uBlock Origin. Moreover, it does not work on nearly every Chinese mainstream video platforms (except Bilibili)
  • It may prevent you from saving web pages and there is a decent discussion on Reddit about this annoying issue

CanvasBlocker

Score: ★★★

CanvasBlocker stops some websites using JS APIs to fingerprint users. This Wikipedia page explains this tracking technique in details. The extension still protects your privacy after my recent test even if the new fingerprint protection feature is introduced in Firefox 67. After installing it, you can check whether you are home safe by visiting here.

WebRTC Control

Score: ★★★

If you use a VPN (or another IP-masking technology) for some reasons, you may worry about your actual IP address leaking caused by WebRTC, which I mentioned previously in uBlock Origin part. Unfortunately, uBlock Origin does not guarantee the prevention of WebRTC leaking completely.

Therefore, a specialised open-source tool like WebRTC Control can be used to fill the gap. In contrast to its counterparts, it asks for less permissions to fulfil the same task and still offers you more flexibility.

Here are some alternatives:

  • Disable WebRTC: an open-source, individually-developed and featured extension with GUIs, worth a try
  • WebRTC Leak Shield: a decent one developed by Hoxx, a German VPN service provider, sadly, requiring too many unrelated permissions

Neat URL

Score: ★★

Neat URL is a straightforward tool to remove tracking elements from URLs, whose options are much more than what Pure URL and ClearURLs provide.

Decentraleyes

Score: ★★

Decentraleyes prevents a lot of requests from content delivery networks (CDNs) by local emulation in order to get faster page loading. It complements regular blockers like uBlock Origin and protects privacy “by evading large delivery networks that claim to offer free services”. Technical explanations can be found in here.

Privacy Badger

Score: ★

As an another privacy tool from EFF, Privacy Badger blocks invisible trackers and removes outgoing link click tracking; it is able to prevent WebRTC leak, like what uBlock Origin does. Noticeably, it covers all functionalities offered by Ghostery – Privacy Ad Blocker, an easy-to-use commercial extension with a large user base.

Known issues: it breaks Youku, Tudou, Ctrip, Douban and NetEase, which are prevalent among Chinese netizens. Therefore you should not forget to add these domains to Disabled Sites of Privacy Badger.

minerBlock

Score: ★

Being an open-source cryptocurrency miner blocker with an extremely big blocklist, minerBlock lets users establish their own blocklists as well, which is actually unnecessary sometimes. Since resource abuse filters built in uBlock Origin are able to block major bitcoin miners, you probably do not need it unless you are really concerned about sneaky browser-based miners. Besides, from Firefox 67 onwards, Firefox itself provides a simple cryptominder blocker (powered by Disconnect) in Content Block settings (accessed by typing about:preferences#privacy in the address bar) while Custom mode is chosen.

Here are some alternatives:

Functionality Enhancement

Markdown Here

Score: ★★★

Markdown Here allows you to write emails in a rich editing mode, which are later rendered into decent HTML-powered layouts (an example showed below) by simply clicking a button. If you are unfamiliar with Markdown grammars, the cheatsheet may be your starting point.

Example
Tables, multi-level headings and bullet lists are applied in Gmail by Markdown Here.

Mind the Time

Score: ★★★

Mind the Time is one of main reasons that I stick to Firefox for so long because there do not exist any alternatives on other mainstream browsers currently. It tracks the amount of time that you spend on each website on a daily basis, pops up a reminder and generates a daily/weekly/monthly report for reviews.

Known issues: it will not count your usage time in Firefox private browsing mode. And if you do want to make it work in private windows, you can type about:preferences#privacy in the address bar and change History settings like what I did (showed below), which gives you the same effect as the private mode, meanwhile, without losing the compatibility of Mind the Time.

History_settings
Change History settings (a screenshot took from Firefox Quantum 66.0.4).

Tabliss

Score: ★★★

Tabliss replaces a dull new tab page with a customised fancy looking. Compared to New Tab Override (WebExtension), it supports widgets like a to-do list displayed on the page.

Search by Image

Score: ★★★

Search by Image is an integrated tool to do a reverse image search and return results from several service providers including Google, Bing and Baidu.

Save Page WE

Score: ★★★

Save Page We merges all resources like multimedia/JS/CSS/HTML from a web page into a single HTML file. It is helpful when you would like to take a web page snapshot or a local backup.

User-Agent Switcher and Manager

Score: ★★

User-Agent Switcher and Manager is the best of all its kind with a huge amount of combinations with various operating systems and browser versions to choose from. Both User-Agent Switcher (by Linder) and User-Agent Switcher (by Alexander Schlarb) have a simple-to-use GUI but lack some flexibility.

LeechBlock NG

Score: ★★

LeechBlock NG (Next Generation) is a productivity tool to limit the usage of some “black-hole-of-free-time” websites (you name it). Personally I use it to block these with timelines, news feeds or waterfall design, which all generate nearly unlimited news to read, during the work time. And multiple block sets give you more flexible options (e.g., one block set for workdays and one for weekends). It is an open-source extension with thorough help documentation.

Here are some alternatives:

  • BlockSite: the one with only one profile and asking for too many unrelated permissions; an email verification is required to activate password protection of BlockSite
  • RescueTime and Forest: the one with a compulsory login needed
  • Distract Me Not (website blocker): its functionality is way too simple

Font Finder (revived)

Score: ★★

Font Finder (revived) inspects selected characters to obtain their CSS styles; it is a must-have for front-end designers or typography enthusiasts.

Country Flags & IP Whois

Score: ★★

Country Flags & IP Whois is a masterpiece from the same author of Font Finder (revived). It displays a country flag of the website’s server location using a compressed local database and Whois information. Previously I used Flagfox but the flags which Flagfox shows on the right part of the address bar are just too blurry.

Known issues: if you notice that it only shows localhost instead of your actual IP address while using proxy on your browser, you should enable “Use the native DNS resolver of your OS” and check its FAQs for more details.

Remove Redirect

Score: ★★

Remove Redirect is a fork of Skip Redirect. Unlike Skip Redirect, it does not pop up an annoying notification when a redirect occurs and works just fine with all reverse search extensions like IMGoogle or Search by Image.

Disable JavaScripts

Score: ★

Disable JavaScripts, as its name indicates, disallows JavaScript executions for specific sites or tabs. It is a simple tool with a really neat icon, compared to other countless similar extensions. Since JavaScript is fundamental for any modern websites, you should turn it on at your own risk.

Dark Reader

Score: ★

Dark Reader enables the less brighter theme for websites on the fly, adjusting brightness/constrast/sepia/grayscale separately. It can change font settings and create an ignore-list as well. More importantly, it supports SVG images perfectly, unlike Night Mode Pro (revived).

As the matter of fact, I struggle to place it (and all its kind of extensions) in my recommendation list. There are some online discussions (definitely not authoritative sources) from Reddit and Stack Exchange about disadvantages of watching a screen in the dark. Accordingly, I highly suggest you to avoid any situations where this extension may be useful, especially when you do not use f.lux, Redshift or switching on night light on Windows 10.

Here are some alternatives:

  • Night Mode Pro (revived): the one that I used previously, changing the screen’s luminosity, with a hue rotation control and a slider-based brightness adjustment
  • night light mode: it is easy to use and covers images with a light grey layer instead of totally reversing colours or leaving them unchanged as Night Mode Pro does; worth a try
  • Dark Night Mode: an ordinary one without too many features
  • Simple Night Mode for Quantum: the one with a less accurate brightness control than Night Mode Pro

Others

In the last section, I will mention some left-over amazing extensions, which I do not use currently for various reasons.

Disable Ctrl-Q and Cmd-Q

Score: ★★★

The extension simply keeps the shortcut Ctrl-Q from exiting Firefox immediately. For numerous times I tried to close the current tab by pressing Ctrl-W; instead I pressed Ctrl-Q by accident. Unfortunately, it does not work in Linux until bug 1325692 is fixed. If you are a Windows/macOS user bothered by this super annoying problem, please give it a try.

EPUBReader

Score: ★★★

EPUBReader is probably the best in-browser EPUB reader available online. Since I already switched to Kubuntu (which has a much better support for fractional scaling than the vanilla Ubuntu with GNOME), Okular, a universal document viewer developed by KDE, can handle EPUB files with extreme slow rendering. If you only need a EPUB reader only rather an E-book management system like Calibre, just install it.

Blur

Score: ★★★

Blur is more than a password manager; it also protect you from insecure online payments. Since I used KeePassXC on all platforms and am never a big fan of online shopping/banking (I am a caveman in the information age, I know), it is not a necessity to me.

Greasemonkey

Score: ★★★

Greasemonkey is an open-source userscript manager available only on Firefox, providing a quick way of installing augmented browsing JavaScript scripts created by users in bunches. If you would like to modify your browser by self-creating Javascript code, this powerful tool may be what you are waiting for.

Here are some alternatives:

NoScript Security Suite

Score: ★★

NoScript is your best choice, as long as you may want to apply different strategies for executable contents like JavaScript and Adobe Flash Player to different websites. It is a rather complex tool with really a steep learning curve. It is embedded into Tor Browser as well and officially endoresed by Edward Snowden for multiple security reasons.

Privacy Settings

Score: ★

Similar to Noscript Security Suite, Privacy Settings provides you with an integrated modification of Firefox privacy settings, although you can disable these settings by about:config manually.

uMatrix

Score: ★

uMatrix is an elaborate even a little bit tedious matrix-based privacy tool for advanced users only, by giving them full control on which elements can be loaded into a browser.

Finally, I honestly hope that you can buy these developers a coffee by making a contribution if possible, when their works truly enlighten your day.

An Easy Bug-Fixing for Redshift on Ubuntu 16.04.1

Redshift is an application of adjusting the colour temperature of your screen based on your current location (which is provided by GeoClue); compared to the Linux version of f.lux, it has relatively smaller in size and less package dependency with the exactly same functionality.

There is only one issue disturbing me for a long time, which is that when I clicked on redshift-gtk icon on the top bar, chose Info option (Figure 1), closed the pop-up window and tried to click on Info again, the pop-up window could not display messages any more (Figure 2).

1
Figure 1: The window in normal mode
2
Figure 2: The window without any text

Even after I updated Redshift to the latest version (v1.12, which can be obtained via this PPA), the problem still remained.

And then I found this link, which is quite similar to what I had. Here is the simple walkaround:

Open /usr/lib/python3/dist-packages/redshift_gtk/statusicon.py with root privilege using whatever text editor you like, find the line self.info_dialog.add_button(_('Close'), Gtk.ButtonsType.CLOSE), and append self.info_dialog.connect('delete-event', self.close_dialog) to it; then add code below at the end of  __init__ function of RedshiftStatusIcon class:

def close_dialog(self, widget, data = None):
    self.info_dialog.hide()
    return True

If you still have problems, please feel free to contact me.

PS: I found that this problem still occurs even in the latest Ubuntu 18.04.2 and fortunately my solution still works.

Brief Reviews about Hotel Rwanda

Journalist: Does the State Department have a view as to whether or not what is happening could be genocide?

Spokeswoman: We have every reason to believe that acts of genocide have occurred.

Journalist: How many acts of genocide does it take to make genocide?

Spokeswoman: Alan, that’s just not a question that I’m in a position to answer.

Journalist: Is it true that you have specific guidance not to use the word “genocide” in isolation but always to preface it with this word “acts of genocide”?

Spokeswoman: I have guidance which I try to use as best as I can I have…… There are formulations that we are using that we are trying to be consistent in our use of……

(Dialogue from Hotel Rwanda)

Hotel Rwanda
The post of Hotel Rwanda

After the first twenty minutes passed during the time when I watched Hotel Rwanda, I realised that it must be an American movie due to its typical storyline development. Paul shows the love for his family in a complete American style. Civilians in Rwanda and US are equivalent in terms of humanity, however I doubt whether they use the exactly same way to treat their family members, considering different values and lifestyles. The plot lacks movements speaking of the movie itself, and the theme itself is quite oppressive, which allows it to resemble a documentary film instead of a commercial one. I think that the mere display of such a horrific slaughter without reflecting critically is meaningless. Provided that other conflicts happen in the future, audience will see movies with similar topics time and time again on the screen and after each one, they will just say, “Oh my God, that’s horrible,” and then go on eating their dinners. And I hope Rwandans can make their own movie on Rwanda genocide one day.

Contradiction is a core topic in this film. The first one comes to my mind is between Tutsi and Hutu. There is an element of class antagonism and economic competition in this crowded part of Africa, but the hatreds result from 30 years of hysterical propaganda by politicians on both sides in quest of absolute power. The antagonism between Hutus and Tutsis in Rwanda is not a tribal or ethnic conflict. “With a spectrum of physical variation in the peoples, Belgian authorities legally mandated ethnic affiliation in the 1920s, based on economic criteria.” Two groups are virtually indistinguishable and may have simply evolved into different social classes or adopted different ways of life. A scene shows that before Hutu soldiers kill a Tutsi, they have to check their IDs or ask their names to ensure their identities. In my opinion, it was, in essence, a political cold-blooded massacre that Hutu carried out on the ground that they failed to be content with being ruled by the minority (Tutsi) for so long a time.

The second one is between Tutsi elites and Tutsi civilians. Terry George, the director,  never refuses to unveil the cruel fact that except orphans sent by a red cross woman worker, survivors in the hotel are almost Tutsi elites. Outside the Milles Collines Hotel, a young Tutsi girl in the orphanage chopped by militia shouts in front of Pat Archer: “Please don’t let them kill me. I promise I won’t be a Tutsi any more”; helpless “Tutsi prostitutes and witches” locked in cages scream in terror at night; corpses of innocent Tutsis overlap each other beside the river in the misty dawn; refugees who lose their places, hobble on the muddy road with all their stuffs, stare vacantly at a fleet of trucks passing them and are unaware of their ultimate fates. Whereas in contrast, Tutsi elites live in a four-star hotel, enjoying the performance of the orchestra and “call foreigners they know and shame them into sending help”. After noticed, they obtain visas to be admitted into neighbouring countries. Unlike “smart” Paul, who knows how to please establishments, impoverished Tutsi peasants never think of bribing bigwigs to improve their current conditions, let alone stay at the hotel. Paul and his family narrowly escape just because Paul works in an international hotel and he knows how to provide useful resources with the general in exchange for helping. What about other “cockroaches”? They have dignity of being men and desire to live too.

Last contradiction, I think, is between groups and individuals. I strongly hold that humanity ONLY exists on individuals. Groups of people (also you can call them countries here if you like) unite for a clear goal by common hatred and benefits and all the organisations care about profit maximisation rather than morals. Obviously, death toll is just a figure in politicians’ eyes. Moreover, collectivism is the last shelter of crimes sometimes. Here is a quotation from The crowd: A study of the popular mind, which is exactly what I want to say:

… our savage, destructive instincts are the inheritance left dormant in all of us from the primitive ages. In the life of the isolated individual it would be dangerous for him to gratify these instincts, while his absorption in an irresponsible crowd, in which in consequence he is assured of impunity, gives him entire liberty to follow them… A crowd which slowly slaughters a defenceless victim displays a very cowardly ferocity; but for the philosopher this ferocity is very closely related to that of the huntsmen who gather in dozens for the pleasure of taking part in the pursuit and killing of a luckless stag by their hounds.

I am no doubt a pessimist. I am moved by Schindler who sold all his property to save Jews under German’s threat and by Paul’s brave and noble actions to protect the “oasis of calm for all our loyal customers”. Although every cloud has a silver lining, it glimmers so unsteadily that it seems to be engulfed by darkness at any time.
Can we, clever human beings, get rid of darkness forever? Does there exist a world with no cry and no killing?

BTW, it is nearly the best independent movie I have ever seen.

Question:
What if US armed forces was dispatched to Rwanda? (Recall Battle of Mogadishu in 1993; plus, no one could imagine that nearly one million people died before Rwanda genocide.)

References:
Joseph C. Miller (ed.), New Encyclopedia of Africa, Volume 2, Dakar-Hydrology, Charles Scribner’s Sons (publisher).

Le Bon, Gustave. The crowd: A study of the popular mind. Macmillan, 1897.

The Usage of Bounding Asterisks *GRIN*

Asterisks using in PST.
Asterisks appearing in PST.

It was the first dialogue I met in the mortuary when I played Planescape: Torment (PST for short) this afternoon and the usage of asterisks (*) aroused my interest. At first, I thought they are used as single quotation marks, but I changed my mind immediately: script designers in Black Isle Studios could press some key near their baby fingers to input ” \’ ” if they used US QWERTY keyboard layout rather than British one or Dvorak. To satisfy my curiosity, I did a little research on it.

As for bounding asterisks, there are two different meanings generally when a phrase or a word is enclosed by them:

1. Emphasis: When boldface and italics are unavailable in plain-text messages (text messaging, Twitter, web forums etc), bounding asterisk is a good substitute of indicating emphases.

*Normal Emphasis*

**Strong Emphasis**

For example:

I watched the game tonight. *No way was he out!*

“I asked *you* first, skull.” (Last option in the picture above.)

2. Action: Asterisks denote an action or non-verbal noises in the sentence with enclosing one or two words usually. In reality,  hyphens (-action-) and double colons (::action::) are also used for similar purposes.

*SIGH* in Charlie Brown's comic strips.
*SIGH* in Charlie Brown’s comic strips.

NB: the cartoonist uses *sigh* to express disappointment (but does not necessarily literally sigh).

As Ben Zimmer wrote:

… by giving yourself your own stage directions enclosed in asterisks, you treat your own words as lines in a play, and then step outside of your character to give the perspective of the playwright in the play you’re acting in.

which is a funny and vivid way to express scene description.

For the second form, there is a short article concerning the fact that bounding asterisks have appeared in comic strips since mid-’60s, prior to Internet era.

PS: There are two widely accepted ways to represent italic and underscore, where people cannot remember how to use HTML tags or just cannot use them.

_underscore_

/italic/

Reference: http://en.wikipedia.org/wiki/Asterisk

A Wonderful Quotation And Some Ideas About Variables

A quotation was seen when I read the “official” logic textbook tonight:

Perfect freedom is reserved for the man who lives by his own work and in that work does what he wants to do.

R. G. Collingwood

English historian and philosopher (1889-1943)

BTW: Introductory Logic and Sets for Computer Scientists even lets dummies (such as me ~.~) gain a clear and general understanding on logic and I don’t wanna go to these darn lectures any more after reading the whole book through, where John always explained something simple in a complex and confusing way.

And I figured out how to introduce variables properly in predicate logic, which John cannot answered during the recent lecture. Mathematicians have a habit that they keep using different kinds of variables (lowercase and uppercase letters, Greek ones, subscripts etc) in the context and ALL are global, and it consumes readers’ precious time to merely analyse their meanings. Actually, they just try to avoid using the same symbol to represent different things. Luckily, I found logicians solve the problem by using the scope (in programming languages, computer scientists name it namespace).

For instance:

(∀x: adult(x)) ∧ (∃x: child(x))

The scope of the quantifier ∀ is from the beginning to the symbol ∧; ∃ covers the rest of the formula. That is to say that, any variables such as y, z, A, B can replace the second x. Nissanke, however, uses two x here just because it WON’T arouse the ambiguity and seems to be “simple”. From my point of view, the example above is no doubt well-formed but not readable enough.

Let’s see another exemplar of bound variables:

x ∀y: loves(x,y)

The author introduces a new variable y, which cannot be substituted by x. Assuming the argument becomes

x: loves(x,x)

then it now is equivalent to that for everyone, they love themselves, which changes the original meaning completely.

In formal language, we use as less variables as possible unless it will cause syntax errors, on the ground that the meaning does not depend on the names of bound variables but on the pattern of their distribution in the formula. In brief, form of formula is priority.

But noticeably for free variables, Nissanke holds that:

Free variables denote unknowns or unspecified objects. Therefore, their replacement alters the meaning, unlike the bound ones.

A formula like loves(x,y) is totally different from loves(x,k) or loves(a,b). For bound variables, they are just SYMBOLS standing for objects within the certain range, whereas in contrast, for free ones, they are unknown objects THEMSELVES.