In this post, I will show you how to setup your own VPN server in a few simple steps.

## 1. Setup

Step 1 - Create a docker volume to save configuration

$ docker volume create --name ovpn-data

Step 2 - Generate config

This step will pull the docker image kylemanna/openvpn:2.3 and run command ovpn_genconfig. The IP_ADDRESS or DOMAIN is your public ip address, eg udp://vpn.hienhoang.ml

$ docker run -v ovpn-data:/etc/openvpn --log-driver=none --rm kylemanna/openvpn:2.3 ovpn_genconfig -u udp://{{IP_ADDRESS | DOMAIN}}

Step 3 - Generate public private key

This step will generate public private key. You must type in 4 to 1023 characters when ask for PEM pass phrase. This will take a few minutes to generate a strong private key.

Read more »

Hey fellow programmers!

Taking a break from the digital world, I recently ventured into the heart of tradition, attending the Double Ninth Festival. It's like hitting 'pause' on our daily coding routine and rebooting into a world of family, memories, and cultural heritage.

The Journey Begins

Swapping my usual coding marathons for a real marathon, I embarked on an 8-hour bus journey from the bustling city to the serene Lam Dong Province. The mission? To reconnect with my roots at the Double Ninth Festival, a day dedicated to honoring ancestors in Chinese culture.

Read more »

In this post, I'll use a well known dataset MINIST handwritten. There are 70,000 images, each image in this dataset is of size 28x28.

First, import the libraries we are going to use.

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns

from sklearn import datasets
from sklearn import manifold

%matplotlib inline

I'm using matplotlib and seaborn for visualization. numpy and pandas to handle numerical arrays and dataframe. I'm also use scikit-learn to get the data and perform t-SNE.

Read more »