{"projects":[{"category":"tool","id":"infrastructure","route":"/infrastructure/","tags":["cloudflare","ops","operations-record"],"title":"Infrastructure","summary":"The main site is published from one private repository: GitHub Actions runs Check and Ship, Wrangler uploads one reviewed Worker version, and promotion deploys that same version."},{"category":"tool","id":"alpine-builder","route":"/alpine-builder/","tags":["alpine","nanopi","images"],"title":"Alpine Builder","summary":"Historical Alpine Linux image-building work for NanoPi boards, adapted from FriendlyARM’s official builder. No longer maintained."},{"category":"tool","id":"typing","route":"/typing/","tags":["rime","yuanshu","input-method"],"title":"Input Foundry","summary":"Rime and Yuanshu input-method builder with live keyboard previews and downloadable packages."},{"category":"tool","id":"hanzi","route":"/hanzi/","tags":["hanzi","language","reference"],"title":"Hanzi Matrix","summary":"Browse the preserved 3,500-character dataset, with pinyin search and recorded character details."},{"category":"tool","id":"unicode","route":"/unicode/","tags":["unicode","characters","reference"],"title":"Unicode Map","summary":"Archived Unicode browser and inspector study; the launch video preserves the original interface."},{"category":"tool","id":"map","route":"/map/","summary":"Bounded city-and-topic OpenStreetMap queries through a public API; this page is a reading record.","tags":["maps","openstreetmap","cities"],"title":"Natural Language City Map"},{"category":"tool","id":"ipa","route":"/ipa/","tags":["ipa","audio","language"],"title":"IPA Chart","summary":"An interactive IPA reference chart with 14 preserved local audio samples."},{"category":"tool","id":"starflash","route":"/starflash/","tags":["macos","usb","ubuntu"],"title":"Starflash","summary":"Guided macOS SD and USB image flasher CLI with standalone Ubuntu autoinstall support."},{"category":"study","id":"origami","route":"/origami/","tags":["geometry","folding"],"title":"Origami","summary":"Archived origami crease and folding-step concept; this page preserves a text outline."},{"category":"study","id":"milk-teeth","route":"/milk-teeth/","tags":["biology","timeline","animation"],"title":"Milk Teeth","summary":"Archived visual study of primary-tooth eruption, with the original animation schedule distinguished from clinical reference ranges."},{"category":"study","id":"geologic-clock","route":"/geologic-clock/","tags":["geology","time","diagrams"],"title":"Geologic Clock","summary":"Generated deep-time visual study."},{"category":"study","id":"polychron","route":"/polychron/","tags":["history","timeline","chinese"],"title":"Polychron","summary":"Search and compare 505 preserved Chinese regnal-era records and inspect the complete timeline."},{"category":"study","id":"motif","route":"/motif/","tags":["generative","drawing","patterns"],"title":"Motif","summary":"A restored Racket drawing DSL explored through geometric and decorative motifs."},{"category":"study","id":"unix-timeline","route":"/unix-timeline/","tags":["unix","history","systems"],"title":"Unix Timeline","summary":"A preserved Unix lineage chart extended through 2026, with zoom to inspect its branches and labels."},{"category":"note","id":"freebsd","route":"/freebsd/","tags":["freebsd","bsd","unix","systems"],"title":"FreeBSD","summary":"A short personal introduction to FreeBSD: what it is, why I used it, and what stayed with me."},{"category":"artifact","id":"cell-field","route":"/cell-field/","tags":["generative","cells","print"],"title":"Cell Field","summary":"A restored generative field of hand-drawn cellular forms, preserved for screen and print."},{"category":"note","id":"sugar-from-a-soldier","route":"/sugar-from-a-soldier/","tags":["family history","archives","hubei"],"title":"Sugar from a soldier","summary":"Testing a grandmother’s memory of Japanese soldiers giving sweets to children in wartime Liu Yuan against Japanese and international records."},{"category":"note","id":"roku-remote-over-tailscale","route":"/roku-remote-over-tailscale/","tags":["roku","tailscale","homelab"],"title":"A Roku remote through Tailscale","summary":"How any available Wi-Fi, manual IP entry, and Tailscale made the official Roku app remote work from outside home."},{"category":"note","id":"ai-workflow","route":"/ai-workflow/","tags":["ai","workflow","codex"],"title":"How I work with AI","summary":"A short explanation of how I use ChatGPT, Codex, Git, and Mayphus as one practical workflow, including a later iPad-first interface experiment."},{"category":"note","id":"ai-native-website-interfaces","route":"/ai-native-website-interfaces/","tags":["ai","interfaces","agents","web"],"title":"AI-native website interfaces","summary":"An evolving proposal for websites built around AI-readable investigation objects, with the human interface as one view."},{"category":"artifact","id":"so-101","route":"/so-101/","tags":["robotics","mujoco","lerobot","computer vision","simulation","hardware"],"title":"SO-101","summary":"A working record from camera-guided MuJoCo learning to agent-assisted physical SO-101 setup, calibration, and fault isolation."},{"category":"artifact","id":"tinystories-rp2040","route":"/tinystories-rp2040/","tags":["ai","rp2040","embedded","transformer","hardware"],"title":"A TinyStories model on my RP2040 board","summary":"Training, quantizing, and physically verifying a tiny Transformer on a custom Raspberry Pi Pico display board through intention-and-observation collaboration with an AI agent."},{"category":"artifact","id":"openlens","route":"/openlens/","tags":["ai","computer vision","android","multilingual","embedded"],"title":"OpenLens: a local-first camera that admits what it does not know","summary":"Building a portable multilingual learning companion, testing offline vision on Android, and keeping model uncertainty visible."},{"category":"artifact","id":"nanopi-r2s-alpine-boot","route":"/nanopi-r2s-alpine-boot/","tags":["nanopi","rk3328","alpine","uart","embedded linux"],"title":"From silent UART to a working NanoPi R2S","summary":"An evidence-led NanoPi R2S investigation: isolate an unreliable UART path, identify a wrong Rockchip image, boot Alpine Linux, and map the RK3328 SD-card chain."},{"category":"note","id":"router-service-tailscale-jump-recovery","route":"/router-service-tailscale-jump-recovery/","tags":["ops","tailscale","router"],"title":"Router service recovery through a Tailscale jump","summary":"A short operations note on recovering a router service through an independent Tailscale jump host when direct access is gone."},{"category":"artifact","id":"learning-book-repair","route":"/electronic-learning-book-repair/","tags":["repair","electronics","teardown"],"title":"Electronic Learning Book Repair","summary":"Repair note for a children's learning book: inspect the power path, clean the battery compartment, replace batteries, and verify the fix."},{"category":"artifact","id":"tp-link-security-camera-investigation","investigation":{"current_answer":"Two cameras still show IR and pan/tilt life; the opened unit maps the hardware, while UART remains silent.","date":"June 22, 2026","evidence":[{"body":"LED changes, reset response, IR activity, and pan/tilt movement reveal which subsystems still receive power.","title":"Power shows behavior."},{"body":"Both intact cameras still show IR and pan/tilt movement at power-on, so they can be compared before another teardown.","title":"Two units remain useful comparisons."},{"body":"The opened camera exposes the main PCB, camera module, motors, audio parts, SD-card slot, IR board, light sensor, UART pads, and power conversion.","title":"One unit is the hardware reference."},{"body":"The USB-TTL follow-up produced no boot output, narrowing the next work toward power rails and boot-state measurements.","title":"UART silence is evidence."}],"id":"tp-link-security-camera-investigation","next_action":"Power-check the remaining cameras, confirm rails, and capture the result before attempting deeper repair.","public_boundary":"Only selected teardown observations and measurements are public; no live room view, credentials, network identifiers, or private device data are published.","question":"What still works inside these three failed cameras, and which power or boot fault best explains the remaining failures?","status":"Investigation state recorded on July 31, 2026","uncertainty":"The remaining rail voltages and boot state have not been measured, so a power fault, stalled boot, or failed main processor is not yet distinguished.","updated":"2026-07-31","workflow":"next"},"route":"/tp-link-security-camera-investigation/","summary":"Curiosity teardown of three TP-Link security cameras: power-on observations, reset/app behavior, internal modules, UART wiring, and what the cameras reveal about their design.","tags":["electronics","camera","teardown","embedded"],"title":"3 TP-Link Security Cameras"},{"category":"tool","id":"books","route":"/books/","tags":["reading","chinese","literature"],"title":"Books","summary":"Browse Chinese classics by title or category and read them in vertical pages with source notes."},{"category":"tool","id":"digit-recognition","route":"/digit-recognition/","tags":["machine-learning","mathematics","interactive"],"title":"How a computer reads a handwritten digit","summary":"Draw a digit and follow its real 8×8 pixels through a small neural network to ten probabilities."},{"category":"artifact","id":"four-province-expressway-atlas","route":"/four-province-expressway-atlas/","tags":["maps","openstreetmap","performance"],"title":"Making a four-province expressway atlas lighter","summary":"A four-province OpenStreetMap atlas: static snapshots, quarter-degree data partitions, and smaller viewport loads, with visual QA still unfinished."},{"category":"artifact","id":"gpt124m-restartable-training","route":"/gpt124m-restartable-training/","tags":["language-models","training","checkpoints","kaggle"],"title":"GPT-124M from scratch: benchmarking and restart recovery","summary":"A randomly initialized GPT-124M trained on 1,000,341,504 tokens using free Kaggle T4s, with verified cross-session recovery and final in-domain evaluation. A completed pretraining demo, not an instruction-tuned assistant."},{"category":"artifact","id":"gulangyu-tile-patterns","route":"/gulangyu-tile-patterns/","tags":["geometry","drawing","gulangyu"],"title":"Gulangyu Tile Patterns","summary":"Twelve geometric studies reconstructed approximately from a Gulangyu staircase photograph."},{"category":"note","id":"ipv4-vs-ipv6","route":"/ipv4-vs-ipv6/","tags":["networking","measurement","operations-record"],"title":"IPv4 vs IPv6: three days of measuring my home link to an overseas server","summary":"A long-lived monitored link dropped often in a short evening window; after switching stacks I logged about three days of checks."},{"category":"artifact","id":"mayphus-store","route":"/mayphus-store/","tags":["cloudflare","commerce","software"],"title":"Mayphus Store","summary":"A small, single-merchant commerce project built on Cloudflare, with physical products, private digital downloads and owner administration through AI tools. Still in development and Stripe test mode."},{"category":"artifact","id":"osmanthus","route":"/osmanthus/","tags":["maps","open-data"],"title":"An osmanthus map with evidence, not promises","summary":"Nineteen destinations around Hangzhou, Keqiao, Jiaxing and Huzhou, with a real basemap and dated evidence. A historical snapshot compiled on October 12, 2026; flowering, crowds and travel times are not live."},{"category":"artifact","id":"resume-builder","route":"/resume-builder/","tags":["software","resume","browser-tools","privacy"],"title":"Résumé Builder","summary":"A local résumé workspace with editable English and Chinese drafts, shared facts, review checks and Typst PDF exports. Browser-native translation is experimental and may be unavailable."},{"category":"note","id":"roku-camera-hls","route":"/roku-camera-hls/","tags":["roku","ffmpeg","hls","homelab","linux","operations-record"],"title":"My IP camera, live on a Roku TV","summary":"A TP-Link camera's 4K HEVC RTSP stream, transcoded on a Linux server to 1080p H.264 HLS and played by a small sideloaded Roku channel. A working home-lab hack with explicit limits."},{"category":"note","id":"tailscale-subnet-route-acl","route":"/tailscale-subnet-route-acl/","tags":["tailscale","networking","ops"],"title":"The Tailscale subnet route that was approved but inaccessible","summary":"An approved Tailscale subnet was unreachable from my phone under a tightened tailnet policy; adding an ACL rule restored access."},{"category":"research","id":"wuxue-speech","route":"/wuxue-speech/","tags":["language","speech recognition","Wuxue","dialect","machine learning"],"title":"Wuxue speech recognition","summary":"A visual guide to the Wuxue speech project: private recordings, LoRA adaptation, evaluation limits, and an original-versus-adapted demo."}]}