Physics and EECS (AI track) at National Tsing Hua University, applying for PhD entry in 2027. I build generative decoders that reconstruct 3D spatial structure from fMRI, and I contribute fixes to GPU and scientific software.
My recent research asks how the brain represents and infers the space around us: recovering the layout of rooms from fMRI and camera motion, letting predictive coding carry full posterior distributions instead of single point estimates, and understanding when associative memory defines a well-behaved energy and why sampling-based predictive coding generalizes.
📚 DocsGPTFixed inflated token counts in DocsGPT streaming replies to improve billing and quota accuracy.
| 🔥 burnCorrected Burn tensor roll direction.
|
Corrected 3DE Radial4 lens calibration derivatives.
| Fixed Hilbert transforms for EEG phase analysis.
|
A Claude Code Stop hook and skill that keeps agents working until every part of the task is done or a real blocker is named, and counts every early stop it catches.
CLIFFHANGER_HOME="$(mktemp -d)" python3 hooks/cliffhanger.py < demo/payloads/offer.jsonRead more → | |
![]() | |
Scan local model stores, find setup problems, and check whether coding agents can use your local endpoint.
uvx --from git+https://github.com/Arthur031221/llm-doctor llm-doctor scan --offlineRead more → | |
![]() | |
Check Docling JSON exports for broken source spans and extraction loss before they reach a search index.
uvx --from git+https://github.com/Arthur031221/docling-guard.git docling-guard demoRead more → | |
![]() | |
- MatrixQR: Matrix-Guided Refinement for Decoupling Reliability Control from Creative Edits in QR Code Generation. TAAI 2025, poster
- Classifying Vibration Modes Generated by the Michelson Interferometer Using Machine Learning Methods. Journal of Modern Physics, 2024
- Building Machine Learning Challenges for Anomaly Detection in Science. arXiv 2503.02112, 2025 (NSF HDR challenge paper)
All 42 projects with my merged pull requests
Babylon.js, 3d-tiles, CloudCompare, ImageMagick, K3D-jupyter, 100-Days-Of-ML-Code, MultiQC, MatX, cccl, cudf, moabb, OpenBLAS, orillusion, awesome-YuE, AliceVision, Meshroom, awesome-mlx, DocsGPT, braindecode, colmap, cp2k, highway, model-viewer, pytorch-image-models, pymdp, rtabmap, kornia, FunASR, mpi4py, nextflow, Odin, ohpc, OSS-DocumentScanner, splat-transform, supersplat, psychopy, numpyro, Pillow, stanza, burn, oneTBB, v
All 31 personal projects
| Project | What it does | Stars |
|---|---|---|
| docling-guard | Offline provenance validation and regression checks for Docling JSON | 2 |
| cardsmith | Offline flashcards from PDFs, slides, and notes. Generate locally, study with SM-2, export | 1 |
| snipmd | Hotkey, drag a box, get Markdown or LaTeX on your clipboard. Offline Mathpix Snip alternat | 1 |
| cliffhanger | Stop hook and skill that keeps Claude Code from ending the turn with work still owed, and | 1 |
| gpuwait | GPU Idle Score for local LLM servers: measure idle time against Ollama, vLLM, mlx-lm | 0 |
| receiptwise | Local receipt and warranty tracker with OCR, spend summaries, and printed deadline reminde | 0 |
| labexplain | Offline lab report reader with printed-range priority, cited adult examples, and optional | 0 |
| oss-launchbot | Policy-aware launch queue and guarded Reddit posting for open-source repositories | 0 |
| reelrecipe | Turn local cooking videos into recipe cards with Whisper, GLM-OCR, Ollama, and Mealie JSON | 0 |
| ollama-verify | Read-only integrity and storage audit for local Ollama models | 0 |
| mlxtrace | MLX training step profiler with power and memory sampling and a standalone HTML timeline | 0 |
| installwall | Check direct npm, pip, gem, and cargo installs for typosquats, new packages, and sourced m | 0 |
| papercompass | Recommendations over your own arXiv library, offline after setup. Not another digest bot. | 0 |
| gpuwho | Live system GPU use alongside named local LLM processes on Apple Silicon, with optional Ne | 0 |
| songforge | Local Suno-style song studio for Apple Silicon: lyrics to full songs with vocals and cover | 0 |
| slopblock | Adblock for AI slop: blurs machine-written posts in your feeds, on-device, and shows why. | 0 |
| modelshift | Find model IDs in your repo that retire soon, replay real prompts on the replacement, and | 0 |
| llm-doctor | brew doctor for local LLMs: dedupe Ollama, LM Studio, HF and MLX weights, catch stale temp | 0 |
| inference-visually | Interactive explainers of the LLM serving stack: KV cache, paged attention, continuous bat | 0 |
| shiftgear | Model and effort routing skill for Claude Code, Codex, Gemini CLI, Cursor, and OpenCode, w | 0 |
| agentleaks | Find, redact and block the API keys in Claude Code, Codex, Cursor, Gemini CLI, Cline and A | 0 |
| envwhy | Explain which .env file or shell variable wins for a key in a Next.js or Vite project. | 0 |
| onecopy | Shows which physical copy of React, or any package, each app and linked library in node_mo | 0 |
| gh-failmap | Group recent failed GitHub Actions runs by the error they share, with a link to each run. | 0 |
| exportwhy | Explains why Node accepts or rejects a package import, for import and require, from the pr | 0 |
| corswhy | Explain which CORS preflight check rejects a browser request | 0 |
| paper-margins | Read research PDFs with local model explanations and visible source pages | 0 |
| cachewhy | Explain browser and shared HTTP cache behavior from response headers | 0 |
| polars-ready | Read-only audit of Pandas code for Polars migration blockers and rewrite patterns | 0 |
| git-sha-ready | Find fixed-length Git object ID assumptions before SHA-256 repositories expose them | 0 |
| agent-context-map | Map repository instructions that may apply to a target path. | 0 |







