Blog
Dated updates and reflections. The current posts are available in both Chinese and English; use the language switcher to read either version.

How Hugo and Oink Integrate Giscus Comments
A complete walkthrough from Hugo parameters and Oink templates to the Giscus iframe and GitHub Discussions, including shared comments across languages and deployments.

Installing a Custom Linux Kernel in a Virtual Machine
Stabilize VMware Ubuntu's NAT network, compile and install a custom kernel, then load a hello module—a complete operating-systems lab workflow.

DNS Notes: Domain Lookups, Resource Records, and HTTPS Certificates
How domain names become IP addresses, what A/CNAME/NS records do, and where CNAME values and TLS certificates fit into the process.

SSH Login and Security Hardening on Linux Servers
Practical CentOS/Ubuntu VPS notes, from connection failures and private-key permission errors to port changes, UFW rules, and key-based authentication.

Building a Personal Site with Oink, from Setup to Publication
Notes on building a documentation site with Hugo and Oink as a frontend beginner, covering content structure, blog posts, hugo.yml, and local preview commands.

Migrating and Consolidating ROS Workspaces
Practical notes on consolidating ROS robots and catkin workspaces into one clean source chain, including duplicate packages, build-time snapshots, and udev rules.
How Hugo and Oink Integrate Giscus Comments

Hugo produces static HTML. It does not provide a server that accepts comments, a database, or a user system. Adding comments to a Hugo site with Oink therefore means delegating the comment interface to Giscus and storing the data in GitHub …
Hugo produces static HTML. It does not provide a server that accepts comments, a database, or a user system. Adding comments to a Hugo site with Oink therefore means delegating the comment interface to Giscus and storing the data in GitHub …
Installing a Custom Linux Kernel in a Virtual Machine

This article has one goal: compile and install a custom kernel in Ubuntu running inside VMware, then load a .ko module I wrote myself. Compilation and kernel replacement both happen in that virtual machine. They consume CPU, memory, and disk space …
This article has one goal: compile and install a custom kernel in Ubuntu running inside VMware, then load a .ko module I wrote myself. Compilation and kernel replacement both happen in that virtual machine. They consume CPU, memory, and disk space …
DNS Notes: Domain Lookups, Resource Records, and HTTPS Certificates

When connecting a personal site to a custom domain, the console presents CNAME, A, and sometimes TXT records. These notes follow the process from the browser finding an IP address, through the purpose of each record type, to the point where HTTPS …
When connecting a personal site to a custom domain, the console presents CNAME, A, and sometimes TXT records. These notes follow the process from the browser finding an IP address, through the purpose of each record type, to the point where HTTPS …
SSH Login and Security Hardening on Linux Servers

My recent SSH experiments on a VPS involved public-network timeouts, private-key permission errors, and port changes that systemd did not pick up. This article combines several Obsidian notes in the order of getting connected, hardening access, and …
My recent SSH experiments on a VPS involved public-network timeouts, private-key permission errors, and port changes that systemd did not pick up. This article combines several Obsidian notes in the order of getting connected, hardening access, and …
Building a Personal Site with Oink, from Setup to Publication

The official Oink tutorial is comprehensive, but connecting the folders, configuration, and commands can still be confusing the first time, especially without much frontend experience. These notes from building YHY Study Website follow one path: …
The official Oink tutorial is comprehensive, but connecting the folders, configuration, and commands can still be confusing the first time, especially without much frontend experience. These notes from building YHY Study Website follow one path: …
Migrating and Consolidating ROS Workspaces

When moving a ROS robot to a new computer or disk, or sharing one codebase across several robots, the easiest trap is not copying the files: it is leaving the old workspace source chain in the shell. When several catkin workspaces overlap on the same …
When moving a ROS robot to a new computer or disk, or sharing one codebase across several robots, the easiest trap is not copying the files: it is leaving the old workspace source chain in the shell. When several catkin workspaces overlap on the same …