2026

Summer

19 min read

A hike through Qingcheng Back Mountain with classmates, covering the ride, the trail, and the small scenes along the way.

17 min read

A northwest Chengdu trip through missed tickets, scenic buses, Anlan Bridge, Feishayan, Baopingkou, Guanxian Ancient City, and sleepless Mount Qingcheng.

Spring

6 min read

Design notes on Hexo i18n — filename conventions for language detection, a permalink filter for path-prefix routing, per-language generators, hreflang, and a language switcher.
Colophon

5 min read

How this site is made: writing workflow, design principles, typography and color, and the build-and-deploy stack.

5 min read

A blog minimalism experiment starting from the article meta bar, tucking fonts, line height, post info, and comments into lighter UI for a quieter page.

6 min read

A lightweight script that makes the Hexo dev server auto-refresh the browser whenever you save a post.

8 min read

Post-100% musings: Latin naming easter eggs, character writing, and music picks

11 min read

An excellent natural history museum with rich dinosaur fossils and mammal specimens, thoughtful exhibit design and animal mounts — well worth a visit.

12 min read

Standing alone and prominent above all other hills, with a circumference of over twenty li at its base, overlooking the great sea

6 min read

February 28 at Qingdao Underwater World, then March 5 at Chengdu Research Base of Giant Panda Breeding.

Winter

11 min read

Reading notes on Hermann Hesse's Beneath the Wheel, and how Hans's story mirrors my own years of exam-driven schooling and burnout.

11 min read

Dazhu Mountain lies 120 li south of the county seat. The *Qi Cheng* records: a famous mountain by the sea. Sheer and craggy, ten thousand fathoms high, its presence overwhelms the surrounding peaks. At its foot, rocks split open to form a gate; there is Stone Gate Temple, and beside it a spring gushing forth like pearls and jade, called Jade Spring, hence the mountain is also known as Jade Spring Mountain. Beside the spring lies a Reclining Elephant Rock; to the east are Lion Peak and Bell Peak, both strikingly lifelike. About two li south, there is Flying Rock; ascending tier by tier leads to the South Heaven Gate. Past Iron Plate Bridge, there is a stone chamber also called Hemp Garment Hermitage, and further Zhu Zhao Hermitage, Black Dragon Pool, Imperial Altar, Ksitigarbha Shrine, and Jade Palace immortal traces too numerous to mention — truly a wonder of the region.

6 min read

Developers often face repetitive coding patterns, ranging from standard if/for structures to Go's error handling or HTML boilerplates. This redundancy is inefficient and error-prone. Snippets offer the optimal solution. When you type a short prefix (e.g., if, for), your IDE suggests a completion item that can be expanded into a predefined code template.

18 min read

Why is it called a Radio Button, a Breadcrumb, a Toast? These UI terms trace back to car radios, Grimm's fairy tales, and toasters — metaphors early GUI designers borrowed from the real world.

8 min read

Consolidate scattered project commands into a single justfile. Learn how Just simplifies multi-language development workflows with better reusability & documentation.

6 min read

The Job Control chapter of Effective Shell covers task control in Bash. This post shows how the same ideas work in Nushell.

4 min read

A simple CSS technique to keep HTML tables within their containers by controlling table layout and text wrapping.

8 min read

OpenCode is an open-source AI coding tool with free models like MiniMax 2.1, GLM 4.7, and Grok Code Fast 1. Here are the lessons from my own daily use.

4 min read

A running review of 2025 blog changes, covering Markdown rendering, images, themes, fonts, responsive design, and performance work.
2025

Winter

10 min read

Add a PostBuild step to your static site CI for image compression and CSS/JS minification. This post covers writing a PostBuild script with ESBuild & minify-html.

Autumn

4 min read

Encapsulating cross-platform functions and isolating OS-specific configs using Nushell.

8 min read

Last September I wrote up my Hexo blog performance work. Recently I tackled the remaining issues with another round of optimizations, recorded here as a follow-up.

4 min read

Customize the VS Code status bar with custom CSS, fonts, item ordering, Vim mode colors, and replacement problem icons.

14 min read

Batch-compressing media files with Nushell to free up OneDrive space.

Summer

3 min read

How Shiki renders inline code, code blocks, and transformer markers in my Hexo blog, for checking styles and layout edge cases.

7 min read

How to set true system-wide environment variables on macOS with a simple Launch Agent and shell script, so GUI apps and every shell see them.

6 min read

A brief walkthrough of how select, poll, and epoll are implemented.

10 min read

🤖 Optimize LCP with preload, fetchpriority, responsive images and srcset. Covers Sharp image processing, CI/CD automation, and preload hints for better Core Web Vitals.

3 min read

Learn how to enhance VSCode text navigation by setting up EasyMotion with the VSCode Vim extension and LazyVim-like keybindings.

3 min read

Fix apt install errors caused by no free space in /var/cache/apt/archives by locating the full partition and using a temporary cache path.

15 min read

A walkthrough of the five I/O models on Linux, with C and Java implementations.
GoWall

3 min read

Convert wallpapers to specific color schemes such as Catppuccin or Nord with GoWall, and wrap the common command in a small script.

3 min read

Study Python's cached_property decorator, how it stores computed values on instances, and where it fits in Django-style code.

Spring

2 min read

Set up a proxy for Git operations, both for HTTP/HTTPS and SSH connections.

10 min read

A look at Git's data structures — objects, references, and branches. These concepts are the foundation for understanding how Git actually works.

18 min read

🤖 Transform your Spotify client with custom themes and extensions using Spicetify. This guide walks you through installing Spicetify CLI and Marketplace on Windows, Linux, and MacOS, helping you personalize your music streaming experience with beautiful themes and powerful add-ons. Elevate your desktop aesthetics with minimal effort!

5 min read

Thus I observe the measure of contentment, forsaking ambitions like drifting clouds, building a house and planting trees, free and self-possessed. The ponds suffice for fishing, the harvested grain for farming. Watering the garden and selling vegetables provides for daily meals; tending sheep and brewing cheese awaits the seasons' needs. Filial in devotion, brotherly in bonds — this too is the governance of the unskilled.

6 min read

Visiting Tiger Hill on May 2nd

3 min read

Compile and install FastFetch on Ubuntu 18.04 manually, including the steps needed to resolve an outdated CMake version.

Winter

3 min read

Integrate medium-zoom into a Hexo blog to replace image-link jumps with an in-page zoom interaction, including Icarus and PJAX notes.

4 min read

Configure Carapace and Fish as Nushell external completers, with alias normalization and dispatcher logic for smarter CLI completion.
2024

Winter

3 min read

Use VS Code Dev Containers to develop inside Docker, reusing an existing Dockerfile while keeping dependencies isolated and reproducible.

5 min read

December 21, 2024: a travel day from Chengdu to Shanghai and Suzhou before reporting to Momenta.

3 min read

Customize VS Code with Custom CSS and Animations, including themes, fonts, status bar styling, borders, and command palette layout.

6 min read

Notes from designing an Internet checksum lab, covering parallel summation and incremental checksum updates.

3 min read

Understand Python decorators as a design pattern, including first-class functions, simple wrappers, chained decorators, and common uses.

Autumn

12 min read

The proxy pattern lets one object stand in for another, controlling access to it and adding features like logging, access control, lazy loading, or monitoring without touching the target's core logic.

6 min read

An introduction to Java's PriorityQueue, its API, custom comparators, and the binary min-heap that powers it.

3 min read

Notes on phone home-screen personalization, including color palettes, icon packs, widgets, fonts, and Samsung Theme Park.

2 min read

Nine nines return to truth; the trials are complete, and the work is done.

Summer

4 min read

A travel note from Tangdao Bay and May Fourth Square in Qingdao, with stops at Yumingzui Village, the Olympic Sailing Center, and Zhanqiao.
Tomcat

6 min read

Apache Tomcat is an open-source, lightweight web application server that implements the Java Servlet and JavaServer Pages (JSP) specs and part of Java EE.

3 min read

HTTP is an application-layer protocol for transferring hypermedia documents such as HTML. This post covers request and response messages.

7 min read

MyBatis notes from the Heima Programmer Java Web course, covering core concepts and a Spring Boot CRUD demo.

13 min read

Maven, the project management tool for Java. Covers basic usage including dependency management, the build lifecycle, and multi-module design.

13 min read

Hands-on with Linux network namespaces, from ip link, ARP, and route basics to connecting namespaces with veth pairs and a Linux bridge.

5 min read

Shell startup and features, command forms, I/O redirection and pipes, shell variables and quoting, writing and running shell scripts, plus a brief intro to sed and awk.

8 min read

An introduction to the Linux operating system, file operations, and permission management

4 min read

Scoop is a command-line installer for Windows. This note covers directory structure, installation, common commands, updates, cleanup, and buckets.

Spring

2 min read

Move an installed WSL distribution to another drive by exporting, unregistering, importing, and restoring the default user.

31 min read

File system basics, directory management with FCBs and inodes, file sharing via hard and symbolic links, physical file structures, and free space management.

30 min read

I/O controllers, channels, and control modes (polling, interrupt, DMA); device data structures; disk scheduling (FCFS, SSTF, SCAN, CSCAN); buffering.

7 min read

Learn how git reset and git revert undo commits, move HEAD, affect the staging area and working tree, and preserve or rewrite history.

12 min read

Notes on database application programming; ODBC/JDBC connectivity, the Java Web persistence layer, PL/pgSQL functions and stored procedures, triggers, and cursors.

6 min read

Merge, edit, and clean up commit history with git rebase -i, plus a look at the experimental git history command added in Git 2.54.

11 min read

Database design process and strategies, E-R model elements, entity relationship types, weak entities, CDM/LDM/PDM design, functional dependencies, normal forms, denormalization, and SQL implementation with Power Designer.

16 min read

Causes and necessary conditions of deadlock, plus prevention, avoidance, detection, and recovery, including the Banker's Algorithm.

8 min read

Levels of processor scheduling, scheduling queue models and criteria, scheduling algorithms, and real-time scheduling.

4 min read

Notes on process scheduling triggers, evaluation metrics, and common algorithms such as FCFS, SJF, RR, MLFQ, EDF, and LLF.

6 min read

SQL statement types and data types; DDL for databases, tables, and indexes; DML for insert, update, delete; DQL with sorting, grouping, subqueries, joins; and views.

7 min read

How Java reflection works, how to obtain Class objects, create instances, invoke methods, and read annotations at runtime, plus its performance trade-offs.
Thread

8 min read

Threads as the basic unit of scheduling, thread control, synchronization with mutexes, condition variables, and semaphores, and ULT vs KLT.

12 min read

Types of IPC: shared memory, pipes, message-passing systems, mailboxes, and client-server mechanisms like sockets and RPC.

2 min read

Notes on concurrency, parallelism, CPU cores, hardware threads, processes, and threads in operating systems.

7 min read

Notes on common Linux commands, shortcuts, and plugins, plus recommended terminals and shells.

22 min read

Process synchronization in operating systems, covering critical sections, semaphores, hardware synchronization, and classic synchronization problems.

2 min read

Use MGit as a Git client on Android, including installation, cloning, local repositories, URL formats, and SSH key setup.

Winter

9 min read

An overview of operating systems, their definition, goals and roles, history, basic characteristics, main functions, and structural design.

4 min read

A database glossary covering structured, unstructured, and semi-structured data, plus relational and NoSQL data models.

10 min read

An introduction to the Stream API introduced in Java 8

3 min read

Single Abstract Method Interfaces are Java functional interfaces. This post explains how to create and use them with lambdas and references.

6 min read

A hash table looks up data in O(1) time. This post walks through hash tables in the Java ecosystem: the data structure, the put process, and thread safety.

4 min read

An incomplete collection of music references hidden in Cyberpunk 2077 mission names, covering both Chinese and English song references.

3 min read

A brief note on using VS Code tasks.json to compile, run, package, and automate common project tasks.

2 min read

A personal list of VS Code extensions for editing, Markdown, formatting, Git, web development, utilities, and drawing.
2023

Autumn

12 min read

Study notes on Java Generics, covering wildcards, PECS, type inference, and how to design generic classes, interfaces, and methods.

1 min read

This page verifies Ratex rendering for inline formulas, displayed equations, matrices, cases, and integrals.

2 min read

Test various Markdown features including color schemes, math, task lists, callouts, and code blocks.

Summer

ChangeLog

Tracking the changes of this blog theme