2025
On a "silent shape bug": A bug goes unnoticed due to broadcasting
26 Aug 2025
A numerical bug from broadcasting in my algorithm went unnoticed for weeks caused by a wrong call of squeeze(). Instead of an element-wise addition, the operation was silently broadcasted, producing an incorrect but programmatically valid result. The bug was only discovered when an edge case with a zero-valued tensor made the output obviously incorrect... Luckily, I caught it before it is too later.
Read More →Set up a centralized mail relay with Postfix
14 Aug 2025
A guide to set up a centralized mail relay using Postfix and then relay all emails from other servers through it.
Read More →Hosting immich in LXC with iGPU passthrough
10 Apr 2025
A guide for directly hosting immich inside an LXC. In this way, you do not have to run immich inside a docker container which is in turn inside a VM or privileged LXC. As a bonus point, you can pass through iGPU to multiple LXCs such that you can enjoy accelerations for some ML and transcoding tasks within LXC. Additionally, I wrote a GitHub workflow routinely (or manually) checking new immich release and building the new server with GitHub's runner, which can save lots of efforts on your side.
Read More →2024
Mounting an NFS Drive at Boot in WSL
23 Sep 2024
WSL fails to mount a NFS drive defined in /etc/fstab. Here is an easy fix.
Read More →Fix a 404 error when a folder without index.html is linked on GitHub Pages
22 Sep 2024
GitHub does not serve root URLs (ending with a "/") unless there is an "index.htm". Good to know!
Read More →Distributed asynchronous parallelized hyperparameter optimization with Ray
18 Sep 2024
Hyperparameter optimization is crucial for obtaining an accurate neural network. Typically, this is done through a Bayesian optimization by running a set of trials sequentially. With Ray and Ax, however, we can distribute the optimization across all allocated resources. This approach significantly reduces the wall time required for completing these tasks.
Read More →Copy location metadata with exiftool
17 Sep 2024
A shell function to copy the GPS location from one media file to others
Read More →Export each layer as a file in Photoshop with a script
14 Sep 2024
A Photoshop script to export each layer as a file using the the layer name as the filename.
Read More →3D print a QR code for this site for ACS Spring 2024
13 Mar 2024
I will be attending the ACS Spring meeting in New Orleans next week. I thought it might be useful to make a QR code for this site so that I could use it while networking. Instead of print a 2D image, I decided to make it 3D.
Read More →Predicting "protein-protein interactions" with neural networks
08 Mar 2024
Use a convolutional neural network to predict if a pairs of proteins interact with each other, part 3.
Read More →Predicting "protein-protein interactions" with neural networks
06 Mar 2024
Use a convolutional neural network to predict if a pairs of proteins interact with each other, part 2.
Read More →Monitor Nextcloud server with Prometheus and Grafana
29 Feb 2024
A tutorial to export stats from Nextcloud's server to Prometheus and Grafana
Read More →Build GitHub Pages locally with Jekyll on Alpine
28 Feb 2024
The workflow is the largely the same with what is on WSL, but with some Alpine specific things and LXC settings.
Read More →Host Grafana and Prometheus inside a Alpine LXC
28 Feb 2024
A tutorial to install and run Grafana and Prometheus on Alpine
Read More →Build GitHub Pages locally with Jekyll
26 Feb 2024
When you are working with Github Pages, it is such a pain to test it, especially if you are working on something like this Jekyll-based site. Without setting up a local environment, to view any change, you have to git commit and push, then wait until GitHub to have your site updated. I decided to follow the official tutorial to do it myself.
Read More →Predicting "protein-protein interactions" with neural networks
25 Feb 2024
Use a convolutional neural network to predict if a pairs of proteins interact with each other, part 1.
Read More →SSL certificate and LAN domain resolution with AdGuard Home and Nginx Proxy Manager
24 Feb 2024
A tutorial to use AdGuard Home and Nginx Proxy Manager to certify self-hosted services and access them without the need of port numbers
Read More →2023
Show PVE host system load on Homepage LXC
26 May 2023
A tutorial to resize the system partition of a virtual machine
Read More →2022
Host Homepage inside a Alpine LXC
05 Dec 2022
A tutorial to set up the Homepage project for Alpine Linux from scratch
Read More →(Physically) install my OctoPrint server
19 Mar 2022
A quick and dirty way to mount the OctoPrint printer under the desk.
Read More →Enlarge the system partition of my Debian VM
10 Mar 2022
A tutorial to resize the system partition of a virtual machine
Read More →2021
Fixing Synology DS2415+
24 Apr 2021
There is a hardware bug in certain Intel Atom CPUs. These CPUs will degrade over time and eventually the computer will not boot up due to the clock issue of the CPU. Funnily, fixing the problem only need one resistor to be soldered on the motherboard. The only thing is that the CPU will die again and by that time, there is no way to fix it.
Read More →