↓ Skip to main content

InkTrace

Where ink is still wet and meaning flows.
Scattered fragments become insights, errors bloom into breakthroughs, and inspiration stirs in the shadows.
Code is how I speak to the world; words are how I listen to myself.

This is Ink Trace—a place where thoughts settle and memories linger.

RxChi1d

RxChi1d

Recent

Immich Traditional Chinese Geodata Deep Dive (5): Rebuilding Taiwan's Administrative Divisions from Official Map Data

··1824 words·4 mins
The previous post, on translating place names with Wikidata, was about how much you have to pay for trustworthy translations when no official map data exists. This post is the opposite case: Taiwan has complete, free, regularly updated official map data, so the processing can be simple to the point of being boring, and that is the best thing about it. This post doubles as a full walkthrough of one handler. The pipeline post covered the fixed extract pipeline and the per-country insertion points. Here we look at what Taiwan actually puts into those slots.

Immich Traditional Chinese Geodata (4): Translating Place Names with Wikidata, and How It Fails Silently

··1762 words·4 mins
The previous post, Five Regions, Five Strategies, noted that place names written in non-Han scripts, as in Thailand and Indonesia, can only go down the translation route, and that the translation source this project settled on is Wikidata. What follows is not about how to query. SPARQL itself is not the hard part. The hard part is this: when Wikidata gets it wrong, there is usually no sign at all. The pipeline does not stop, the log reports no error, and the output is a perfectly valid Chinese string that simply points to the wrong place.

Immich Traditional Chinese Geodata (3): Five Regions, Five Strategies

··2075 words·5 mins
The first two posts covered the mechanism and the pipeline: Immich reads place names from cities500.txt, and that file is produced from national mapping data by extract and release. Technically, “how to swap the data” is a settled question. The genuinely hard part is something else: what should a foreign place name look like so that it reads naturally to a Taiwanese user? immich-geodata-zh-tw currently handles five regions, and it gives five different answers. This post is about the criterion behind those answers.

Immich Traditional Chinese Geodata, Part 2: The Data Pipeline

··3323 words·7 mins
The previous post in this series, How Reverse Geocoding Works, took apart the way Immich reads geographic data: a handful of plain text files get imported into PostgreSQL at startup, and a nearest-neighbour query resolves a place name when a photo is uploaded. Since swapping the files is enough to swap what gets displayed, the remaining question is about those “better files” themselves. This post takes apart the immich-geodata-zh-tw pipeline, from each country’s official map data all the way to the release.tar.gz that users download.

Immich Traditional Chinese Geodata Deep Dive (1): How Reverse Geocoding Actually Works

··1811 words·4 mins
Every time you upload a photo to Immich, the system automatically tags where it was taken, say “Xinyi District, Taipei” or “Shibuya, Tokyo”. That is not the work of a cloud API. It is a reverse geocoding system that runs entirely offline. Because it runs offline, there is room for a project like immich-geodata-zh-tw to exist (for the actual installation steps, see the illustrated setup guide in the first post of this series). Immich reads place names from a handful of plain text files, so replacing those files changes the place names it displays. This is the first technical post in the series, and it lays the groundwork: what actually happens when Immich resolves a place name, which files it reads, and what room that mechanism leaves for us to work with. Everything in the later posts, the per-country strategies, the translation work, the validation, builds on this.

Docker Container Monitor - Monitoring Docker Container Status with Grafana

··597 words·3 mins
This comprehensive guide demonstrates how to build a complete Docker container monitoring system using Prometheus, Node Exporter, cAdvisor, and Grafana. We’ll cover creating Docker networks, preparing Prometheus configuration, deploying monitoring services with Docker Compose, and configuring Grafana data sources and dashboards to effectively monitor Docker container performance and status.