Yearly Archives: 2021


Problem with compiling C# code on Ubuntu using the mono project while the source path contains Unicode characters

To avoid having the same issues as we did, avoid saving your code in folders that contain spaces and non-ASCII characters as it seems that the mono compiler on Ubuntu GNU/Linux is having some issues dealing with those.

We installed the mono compiler as follows:

sudo apt install mono-complete;

Then we tried to compile our C# code as follows:

mcs -out:program.exe Program.cs;

Which produced the following error:

error CS0016: Could not write to file `program'. Could not find a part of the path "윐뛶單/윐뛶單/program.exe".

By moving our code out of that folder, we were able to compile and execute our application as follows:

mono program.exe;


Cold-brew iceberg coffee

This guide will show you how to make delicious cold-brew coffee at home. Iced coffee will never taste watery or bitter again.

You can drink decent iced coffee all year round, but if you detest how watered down or bitter most iced coffees end up, you only have one choice: cold-brew coffee. Every time, this process creates an icy and smooth cup.

Cold-brew coffee doesn’t take a high level of expertise or special equipment to produce, and there are numerous examples of how to go about doing so on the internet. You only need a big container and a strainer to prepare the coffee.

Steps for making cold-brew coffee

The following shows how it works: Grind the coffee coarsely, and you can perform this job yourself in your own home or at the place where you buy your beans. Pour the grounds into a container, then add water. Cover and let sit for 12 hours or overnight.

When this happens, the coffee absorbs into the water at a prolonged rate, which results in a solid, concentrated brew. The next morning, strain the liquid, and you’re good to go.

Steps for making cold-brew iceberg coffee

This section takes it a bit further, which actually makes the coffee process even longer! Once the above procedure is done, pour the iced coffee into ice cube molds and freeze until solid, about 5 hours.

Then, finally, after so many hours of waiting for a cup of coffee… pour some fresh cold-brew coffee in a glass and add lots of cold-brew coffee ice cubes to it!

Enjoy!

Alternative steps for making cold-brew iceberg coffee

Instead of pouring the iced coffee into ice cube molds, pour coffee into a glass and fill it up to half. Then put that glass into the freezer and let it freeze solid.

The next day, pour fresh cold-brew coffee in that glass and give it a few minutes for the ice to get unstuck from the bottom of the glass! You will be drinking icy coffee all day long! (This actually works by pouring filter coffee or other warm coffee instead of cold-brew, and it gets cold really fast! There might be a chance for the glass to break, never happened to us, but still… you never know.).


A note on the Chrome Plugin “Fast Delete Messages” for deleting all Facebook Messenger Messages without deleting the conversations

Recently, we used the “Fast Delete Messages” on Chromium browser to delete all messages of a Facebook Messenger account without deleting the chats themselves.

To our surprise, we noticed two observations:

  1. The plugin worked extremely fast!
    We thought it would take a few minutes (as it would delete messages one by one), but it finished in less than a few seconds in reality.
  2. After the plugin finished, the list of conversations was empty!
    Initially, we thought a bug was in the plugin, and it had deleted all conversations.
    Following some research, it appeared that the conversations were not deleted, but Messenger hid them!
    We verified that the conversations were hidden as whenever anyone would send a message in a conversation or group chat, the conversation would appear, and it would work normally.

View Cisco Webex Recordings (or Join certain Live Sessions) on 64-bit Ubuntu 18.04 LTS

Recently, we were trying to view some Webex recordings on an updated Ubuntu 18.04LTS. After several attempts and various browsers (including the latest versions of Firefox, Google Chrome, Chromium), we could not view the recordings.

When clicking on the link, we would be redirected to install the Webex browser plugin, and then after we had installed it, we would either be redirected to a macOS installation file (Cisco_WebEx_Add-On.dmg) or to a Java servlet configuration file (CiscoWebExServlet).

We did lots of tests that are not worth mentioning, so we will go straight to the solution we followed from this page: https://gist.github.com/mshkrebtan/407786e334847544b40e7d6a8a53d247
What the solution recommended, was to install the 32-bit ESR version of Firefox, along with a 32-bit version of the Oracle JRE.

Enable support for 32-bit executables

Add the i386 architecture to the list of dpkg architectures :

sudo dpkg --add-architecture i386

Install the libraries required to execute ELF-32 executables:

sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

Install Firefox 78.7.0esr ESR (32-bit)

Beginning with Firefox 52 (released March 2017), plug-in support is limited to Adobe Flash and drops support for NPAPI, impacting plugins for Java, Silverlight, and other similar NPAPI-based plugins. Hence you need the ESR release. You can read more on that here: https://www.java.com/en/download/help/firefox_java.xml
Download Firefox ESR for Linux (32-bit) from here.
Unpack it to somewhere, for example, to /opt/webex/:

sudo mkdir -p /opt/webex/
sudo tar -xjvf firefoxesr.tar.bz2 -C /opt/webex/

Install the libraries required for Firefox (i386) to run smoothly:

sudo apt-get install libgtk-3-0:i386 libasound2:i386 libdbus-glib-1-2:i386 libxt6:i386 libxtst6:i386 libcanberra-gtk-module:i386 libcanberra-gtk-3-module:i386 topmenu-gtk3:i386

Install 32-bit Oracle JRE

Download Oracle JRE for Linux (a tar.gz archive for x86 architecture) from here. Unpack it to /opt/webex/:

sudo tar -xzvf jrelinux-i586.tar.gz -C /opt/webex/
sudo mv /opt/webex/jre /opt/webex/jre

Enable Java support in Firefox

Create symbolic links for the Java browser plugin libraries:

sudo apt-get install libpangoxft-1.0-0:i386 libxft2:i386 libpangox-1.0-0:i386 libxmu6:i386 libxv1:i386 libasound2-plugins:i386;

Create a Firefox launch script

cat << 'EOF' | sudo tee /opt/webex/firefox.sh
!/bin/bash

export ENV_HOME=/opt/webex
export FIREFOX_HOME=$ENV_HOME/firefox
export MOZ_PLUGIN_PATH=$ENV_HOME/firefox/plugins
export JAVA_HOME=$ENV_HOME/jre
export PATH=$JAVA_HOME/bin:$PATH

$FIREFOX_HOME/firefox --no-remote -P
EOF

This script will start a new instance of Firefox with the ProfileManager. Choose an existing Firefox profile or create a new one.
You might want to specify a specific profile to start with. Just add the profile name after the -P flag.
Don’t forget to make the script executable:

sudo chmod a+x /opt/webex/firefox.sh

You might want to create a symlink, like this to make it easier to start the 32-bit version of Firefox using a custom name:

sudo ln -s /opt/webex/firefox.sh /usr/local/bin/firefox-i386

Start a Webex session

Launch the 32-bit Firefox using the script and join a Webex session.
If webex.com sends you a jnlp (or a CiscoWebExServlet) file, and Firefox asks what to do with it, download it.
Further, in the Firefox Preferences > Applications, set the action for JNLP files: they should be opened with javaws (Java Web Start) which can be found here:

/opt/webex/jre/bin/javaws

(Optional) Install the missing libraries required by Webex

Find out what required libraries are be missing (note that the session number may be different):

ldd ~/.webex/T30_MC/*.so | grep "not found"

You can use https://packages.ubuntu.com/ to find out which packages contain the libraries.