Matsu Kaliu

Last month, my wife and I spent about 2 weeks in Matsu, where time seemed to be frozen on the island. The pace was slow enough to ride a bike on the road at 25 km/hr without any other vehicles around, feeling the wind gently brush through the face.

I found it very correct to bring the book “Four Thousand Weeks” to Matsu. I slowly read this book during the travel. The book discusses the concept of “life is enough for everyone”, we just have to enjoy the moment and don’t blame ourselves too much.

Read More...




GPG AES 256 encrypt and decrypt

Encrypt

1
2
3
4
5
gpg --cipher-algo AES256 \
--no-symkey-cache \
--batch --pinentry-mode loopback \
--passphrase "STRONG_PASSWORD" \
--output ENCRYPTED_FILENAME --symmetric FILENAME

Decrypt

1
2
3
4
gpg --no-symkey-cache \
--batch --pinentry-mode loopback \
--passphrase "STRONG_PASSWORD" \
--output DECRYPTED_FILENAME --decrypt ENCRYPTED_FILENAME

Option explanation

If directly using gpg -c XXX and gpg -d XXX the gpg-agent will prompt the password asking dialog.

See GPG manual:

1
2
3
4
If this command is used with --batch, --pinentry-mode has been set to loopback,  and  one  of
the passphrase options (--passphrase, --passphrase-fd, or --passphrase-file) is used, the
supplied passphrase is used for the new key and the agent does not ask for it. To create a
key without any protection --passphrase '' may be used.

So just set it with --batch and --pinentry-mode loopback, then can use the --passphrase.

--no-symkey-cache to disable symmetric key cached and --cipher-algo to set algorithm.

Available algorithms can check by gpg --version.

Hope this save your time! :)



Screenshot of the week 2022/07/29

In the past week, I created a Pomodoro app! Built with next.js and Flask, custom components mimic iOS. Can save to home to launch as web app. It’s happy to build a self-used app! I can now collect my data for analysis!


Next.js shared repository component

These days I’m building several next.js apps and want to share some libraries. In the beginning plain js file without compile just work well. But when it comes to jsx component element with sass component-level module, next.js start to fail.

After several tries, I found a solution:

  1. Create shared package somewhere
  2. Use yarn link to link shared library
  3. Use next-transpile-module to transpile library
  4. Tada!

Read More...


Dyslexia

Yesterday, I met a friend who is incapable of reading Chinese fluently. When he reads, each word is bumping with random wrong orders, so he must pause at each word to understand the meaning. When watching Netflix, it’s impossible for him to read the subtitle, so he has to watch with Chinese dubbing. That is so-called Dyslexia, which affects 3 ~ 7% of the population, and up to 20% have some degree of this disability.

Read More...