Mobile Phone as a Hotspot for Windows 10 in Mauritius

Yes you can. But in reality, you shouldn’t unless you have unlimited mobile data.

Since Microsoft can decide when to send updates to your laptop and update it whenever they want, you won’t have an idea whether you 100MB mobile data will be sufficient to write that that job application email or browse Facebook for 10 minutes.

A linux operating system on the other hand allows you to have control on when you want it to be upgraded. I highly recommend Ubuntu LTS or KDE Neon (also based on Ubuntu LTS). I also recommend Chilli’s Zeness Pack which give you 750MB of mobile data for Rs 75 per month. I think it’s a really good deal. The Chilli network is not always available in some remote areas though.

 

Smart Home Automation Business in Mauritius

Previously I had made my outside light turn on automatically when I reach in front of my house:

Afterwards, I wrote about how we can use the sun setting time to turn on lights when motion is detected in my kitchen. There’s no point in turning the lights when it’s not dark.

I’ve had quite some success in those projects so I finally decided to open Smart Home Automation company in Mauritius with my Egyptian partner. You can find our website here: mu.ibeesmart.com and also our Smart Home Automation blog.

Do not hesitate to contact us if you are building a house and you want to it be a modern one.

 

Choosing between LG Gram and ASUS ZenBook UX310

The decision was tough. The LG Gram was light AF. The screen was 14 inch with a very thin bezel. The display was amazingly bright. It had the WOW factor. You would immediately fall in love with it.

The ASUS on the other hand had a 13 inch display with a thick screen bezel. The screen looks cheap when compared to the Gram despite being 1080p. ASUS didn’t market the battery life of the ZenBook as LG did with a “17.5 hours battery life” sticker. Reading reviews online for the ASUS gave mixed results. But they claimed around 6 – 7 hours.

 

The LG Gram seems to be a much better contender but when I actually compared the spec sheets of both, the decision became harder.

The ASUS ZenBook UX310 had a 7th generation Core i7 CPU with a dedicated GPU (NVIDIA GeForce 940 MX) and 128GB SSD plus a 1TB HDD. The LG Gram had a Core i5 CPU with no dedicated GPU and a 256GB SSD. Both had 8GB RAM.

The ASUS ZenBook can easily become my main laptop while being light enough to be carried to conferences and attend on-site client meetings. On the other hand, the LG Gram has to be supplemented more storage and I might need to use a more powerful computer for editing pictures and videos. I preferred not to take the risk of buying something that might not be as fast I as I expected so I chose the ASUS ZenBok UX310 to be on the safe side.

Plus the webcam position on the Gram is really awkward for video conferencing.

Upgrading from MySQL to MariaDB on Ubuntu Server 16.04LTS

Let’s see which version of MySQL is installed

root@mysql-bak:~# dpkg -l | grep mysql
ii  mysql-client-5.7                 5.7.22-0ubuntu0.16.04.1  
ii  mysql-client-core-5.7            5.7.22-0ubuntu0.16.04.1  
ii  mysql-common                     5.7.22-0ubuntu0.16.04.1
ii  mysql-server                     5.7.22-0ubuntu0.16.04.1 
ii  mysql-server-5.7                 5.7.22-0ubuntu0.16.04.1  
ii  mysql-server-core-5.7            5.7.22-0ubuntu0.16.04.1

Rumour says that MariaDB is a “drop-in” replacement for MySQL. Let’s try install MariaDB as is.

reimport them hereroot@mysql-bak:~# apt-get install mariadb-server
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following package was automatically installed and is no longer required:
  libevent-core-2.0-5
Use 'apt autoremove' to remove it.
The following additional packages will be installed:
  libdbd-mysql-perl libdbi-perl libmysqlclient20 libterm-readkey-perl mariadb-client-10.0 mariadb-client-core-10.0 mariadb-common mariadb-server-10.0 mariadb-server-core-10.0
Suggested packages:
  libclone-perl libmldbm-perl libnet-daemon-perl libsql-statement-reimport them hereperl mailx mariadb-test tinyca
The following packages will be REMOVED:
  mysql-client-5.7 mysql-client-core-5.7 mysql-server mysql-server-5.7 mysql-server-core-5.7
The following NEW packages will be installed:
  libdbd-mysql-perl libdbi-perl libmysqlclient20 libterm-readkey-perl mariadb-client-10.0 mariadb-client-core-10.0 mariadb-common mariadb-server mariadb-server-10.0 mariadb-server-core-10.0
0 upgraded, 10 newly installed, 5 to remove and 0 not upgraded.
Need to get 16.3 MB of archives.
After this operation, 15.2 MB disk space will be freed.
Do you want to continue? [Y/n]

And we press Y!

The old data directory will be saved at new location. │ │ A file named /var/lib/mysql/debian-*.flag exists on this system. The number indicated │ │ Therefore the previous data directory will be renamed to /var/lib/mysql-* and a new d │ │ Please manually export/import your data (e.g. with mysqldump) if needed.

And all your data is not accessible.

You’ll need to have MariaDB 10.1 or higher which can import MySQL data.

sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mariadb.mirrors.ovh.net/MariaDB/repo/10.2/ubuntu xenial main'
sudo apt update
sudo apt install mariadb-server

You database should now be MariaDB 😉

Elasticsearch on Docker Swarm with NGINX

On all Hosts:

sudo sysctl -w vm.max_map_count=262144

On Host 1:

1. We initialize a docker swarm. Add `–advertise-addr X.X.X.X` if inside a private network

# docker swarm init

1. We create a network on docker

# docker network create --driver overlay --subnet 10.0.10.0/24   --opt encrypted elastics

“Overlay networks connect multiple Docker daemons together and enable swarm services to communicate with each other.” [2]

2. We initialize the docker containers with 3 copies

docker service create --name elasticsearch --network=elastics \
  --replicas 3 \
  --env SERVICE_NAME=elasticsearch \
  --env "ES_JAVA_OPTS=-Xms256m -Xmx256m -XX:-AssumeMP" \
  --publish 9200:9200 \
  --publish 9300:9300 \
  youngbe/docker-swarm-elasticsearch:5.5.0

3. We get the command to generate the joining link

# docker swarm join-token worker
To add a worker to this swarm, run the following command:

    docker swarm join \
    --token SWMTKN-TOKEN \
    X.X.X.X:2377

On Worker Host
1. Type the command from the last step from host 1

# docker swarm join \
    --token TOKEN \
    X.X.X.X:2377

On Master 1

1. We now setup nginx

docker service create --name meranginx --network=elastics  nginx
docker service create --name nginx --network=elastics --mount type=bind,source=/root/meradockernginx/elasticsearch.conf,destination=/etc/nginx/conf.d/elasticsearch.conf nginx

To be continued…
#TODO: make a conf file for nginx which listens on port 9200 and uses `elasticsearch` as backend server

References:

[1] https://github.com/imyoungyang/docker-swarm-elasticsearch
[2] https://docs.docker.com/network/#network-drivers