Summer ’26

Wangjiang Pavilion, Remembered
I toured Wangjiang Pavilion on June 12, but the write-up dragged; weeks later I scraped together what details I could recall and set them down for later.

17 min read

Spring ’26

Notes on Adding I18n to a Hexo Blog
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.

6 min read

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

5 min read

Way to Minimalism, Part 1: Meta Bar
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.

5 min read

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

11 min read

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

12 min read

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

6 min read

Winter ’25/26

Beneath the Wheel
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

Type Less With Code Snippets
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.

6 min read

UI/UX Terminology
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.

17 min read

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

6 min read

A Practical Guide to OpenCode
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.

8 min read

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

4 min read

PostBuild With ESBuild & Minify-HTML
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.

10 min read

Autumn ’25

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

4 min read

Summer ’25

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

3 min read

Set System Env-Vars in UNIX
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.

7 min read

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

10 min read

Clean Disk Space in Ubuntu
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.

3 min read

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

15 min read

GoWall
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

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

3 min read

Spring ’25

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

2 min read

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

10 min read

Spotify Ricing(Spicetify)
🤖 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!

18 min read

Humble Administrator's Garden
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.

5 min read

Winter ’24/25

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

3 min read

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

3 min read

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

5 min read

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

3 min read

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

6 min read

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

3 min read

Autumn ’24

The Proxy Pattern in Java
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.

12 min read

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

6 min read

Summer ’24

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

4 min read

Tomcat
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.

6 min read

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

3 min read

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

7 min read

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

13 min read

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

13 min read

Shell Programming
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.

5 min read

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

4 min read

Spring ’24

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

2 min read

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

31 min read

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

30 min read

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

12 min read

Ch4 - Database Design and Implementation
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.

11 min read

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

16 min read

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

8 min read

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

4 min read

Ch3 - Database Operations With SQL
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.

6 min read

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

7 min read

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

8 min read

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

12 min read

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

7 min read

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

22 min read

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

2 min read

Winter ’23/24

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

4 min read

Java Stream
An introduction to the Stream API introduced in Java 8

10 min read

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

3 min read

Java Hashtable
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.

6 min read

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

3 min read

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

2 min read

Autumn ’23

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

12 min read

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

1 min read

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

2 min read

Summer ’23