Blog posts

2026

A Professional Git Worktree Workflow with a Bare Repository

7 minute read

Published:

If you regularly switch between branches, keep separate runtime environments, or want AI agents to work without disturbing your main checkout, a bare repository plus git worktree is one of the cleanest setups.

Why SSH Still Asks for a Password After PasswordAuthentication no

3 minute read

Published:

If you set PasswordAuthentication no in sshd_config and SSH still accepts a password, the problem is usually not your keys. The problem is that OpenSSH can still allow password-like login through KbdInteractiveAuthentication, often backed by PAM.

Good Software Rules

3 minute read

Published:

These are rules to reread, not slogans to admire.

Planar Homology: Applications and Intuition

4 minute read

Published:

Exploring the applications and intuitive understanding of planar homologies in projective geometry, computer vision, and geometric transformations.

2025

Problems of China’s Math Education for Students

3 minute read

Published:

An analysis of the systemic problems in China’s math education system, examining what works and what doesn’t, and comparing approaches with other countries.

Setting Up Jupyter Terminal Keyboard Shortcut

1 minute read

Published:

Learn how to quickly create a new terminal in Jupyter using a custom keyboard shortcut. This is especially useful for developers who frequently need to run shell commands while working in Jupyter notebooks.