[
  {
    "slug": "fix-markdown-pdf-mermaid-export-error",
    "kind": "article",
    "publishedOn": "2025-07-18",
    "author": "Z. Yuan",
    "locale": "en",
    "title": "Fix Markdown PDF Mermaid Export Error",
    "summary": "Fix export errors to ensure Mermaid diagrams render correctly.",
    "path": "/content/blog/en/fix-markdown-pdf-mermaid-export-error.d4c6d66425ab.md",
    "imageSizes": {
      "/content/blog/assets/fix-markdown-pdf-mermaid-export-error/618d04abeda8.jpg": {
        "width": 2809,
        "height": 2099
      },
      "/content/blog/assets/fix-markdown-pdf-mermaid-export-error/2a400b3591ff.jpg": {
        "width": 1224,
        "height": 292
      },
      "/content/blog/assets/fix-markdown-pdf-mermaid-export-error/dbb0b39591b7.jpg": {
        "width": 1224,
        "height": 508
      }
    },
    "cover": "/content/blog/assets/fix-markdown-pdf-mermaid-export-error/766792adc6fd.jpg"
  },
  {
    "slug": "colorful-cli-with-ansi-escape-codes",
    "kind": "article",
    "publishedOn": "2025-04-12",
    "author": "Z. Yuan",
    "locale": "en",
    "title": "Your Terminal Shouldn't Just Be Black and White",
    "summary": "Get to know ANSI Escape Codes and bring some color to your CLI output.",
    "path": "/content/blog/en/colorful-cli-with-ansi-escape-codes.b509281f3643.md",
    "imageSizes": {},
    "cover": "/content/blog/assets/colorful-cli-with-ansi-escape-codes/bf86e674e0c4.jpg"
  },
  {
    "slug": "fas-paper-roadmap",
    "kind": "article",
    "publishedOn": "2025-04-01",
    "author": "Z. Yuan",
    "locale": "en",
    "title": "A Face Anti-Spoofing Research Map",
    "summary": "A reading map of forty papers on datasets, methods, and evaluation for face anti-spoofing.",
    "path": "/content/blog/en/fas-paper-roadmap.d57bee581595.md",
    "imageSizes": {},
    "cover": "/content/blog/assets/fas-paper-roadmap/d2483bf19175.jpg"
  },
  {
    "slug": "download-from-google-drive-using-python",
    "kind": "article",
    "publishedOn": "2025-02-19",
    "author": "Z. Yuan",
    "locale": "en",
    "title": "Download Google Drive Files with Python",
    "summary": "Handle confirmation pages and streamed downloads, and know when to use the official API.",
    "path": "/content/blog/en/download-from-google-drive-using-python.258962f8b9f8.md",
    "imageSizes": {},
    "cover": "/content/blog/assets/download-from-google-drive-using-python/6e2af5a3dd4c.webp"
  },
  {
    "slug": "github-markdown-advanced-syntax",
    "kind": "article",
    "publishedOn": "2025-01-13",
    "author": "Z. Yuan",
    "locale": "en",
    "title": "Useful GitHub Markdown Syntax",
    "summary": "Introducing uncommon yet practical syntax.",
    "path": "/content/blog/en/github-markdown-advanced-syntax.208c460b8eef.md",
    "imageSizes": {
      "/content/blog/assets/github-markdown-advanced-syntax/f50d5b642be3.jpg": {
        "width": 1224,
        "height": 756
      }
    },
    "cover": "/content/blog/assets/github-markdown-advanced-syntax/f95adfcfd00e.webp"
  },
  {
    "slug": "extract-font-info-by-python",
    "kind": "article",
    "publishedOn": "2024-12-26",
    "author": "Z. Yuan",
    "locale": "en",
    "title": "Inspect Font File Metadata with Python",
    "summary": "Use fontTools to read names, character maps, and layout metrics from TTF and OTF files.",
    "path": "/content/blog/en/extract-font-info-by-python.87c5b09f2dfb.md",
    "imageSizes": {},
    "cover": "/content/blog/assets/extract-font-info-by-python/e46339160260.webp"
  },
  {
    "slug": "graph-convolutional-networks",
    "kind": "article",
    "publishedOn": "2024-12-05",
    "author": "Z. Yuan",
    "locale": "en",
    "title": "A Brief Introduction to Graph Convolutional Networks",
    "summary": "A simple introduction to GCN",
    "path": "/content/blog/en/graph-convolutional-networks.aaaf02a7769d.md",
    "imageSizes": {
      "/content/blog/assets/graph-convolutional-networks/e30e59d73288.jpg": {
        "width": 3721,
        "height": 1668
      }
    },
    "cover": "/content/blog/assets/graph-convolutional-networks/aae5b21e1ac5.webp"
  },
  {
    "slug": "fourier-transform",
    "kind": "article",
    "publishedOn": "2024-12-02",
    "author": "Z. Yuan",
    "locale": "en",
    "title": "A Brief Introduction to Fourier Transform",
    "summary": "A simple introduction to the basic concepts of Fourier Transform.",
    "path": "/content/blog/en/fourier-transform.3544860b3801.md",
    "imageSizes": {
      "/content/blog/assets/fourier-transform/60c45d0f6141.png": {
        "width": 1920,
        "height": 1978
      }
    },
    "cover": "/content/blog/assets/fourier-transform/2d5915c160f6.webp"
  },
  {
    "slug": "torch-layernorm-mismatch",
    "kind": "article",
    "publishedOn": "2024-08-20",
    "author": "Z. Yuan",
    "locale": "en",
    "title": "Discrepancy in LayerNorm Calculations?",
    "summary": "Curious about the numbers? Let's calculate and compare.",
    "path": "/content/blog/en/torch-layernorm-mismatch.b348108065b5.md",
    "imageSizes": {},
    "cover": "/content/blog/assets/torch-layernorm-mismatch/77e51e1e30aa.webp"
  },
  {
    "slug": "impl-normalized-levenshtein-similarity",
    "kind": "article",
    "publishedOn": "2024-05-16",
    "author": "Z. Yuan",
    "locale": "en",
    "title": "Implement ANLS",
    "summary": "Compute normalized edit similarity with torchmetrics and the ST-VQA threshold.",
    "path": "/content/blog/en/impl-normalized-levenshtein-similarity.40b195f2d775.md",
    "imageSizes": {},
    "cover": "/content/blog/assets/impl-normalized-levenshtein-similarity/beabe67a25de.webp"
  },
  {
    "slug": "gosu-usage",
    "kind": "article",
    "publishedOn": "2024-02-03",
    "author": "Z. Yuan",
    "locale": "en",
    "title": "Switch Container Users with gosu",
    "summary": "Use gosu in an entrypoint and inspect signal delivery and terminal boundaries.",
    "path": "/content/blog/en/gosu-usage.d57ee7d9582b.md",
    "imageSizes": {},
    "cover": "/content/blog/assets/gosu-usage/a18176ea0d8e.webp"
  },
  {
    "slug": "login-rtf8207w",
    "kind": "article",
    "publishedOn": "2023-09-04",
    "author": "Z. Yuan",
    "locale": "en",
    "title": "Access an RTF8207W Router",
    "summary": "Identify the device version, locate its management address, and check access conditions.",
    "path": "/content/blog/en/login-rtf8207w.d95cf96ea5a8.md",
    "imageSizes": {
      "/content/blog/assets/login-rtf8207w/79386cc3d28a.jpg": {
        "width": 1184,
        "height": 688
      }
    },
    "cover": "/content/blog/assets/login-rtf8207w/c2a6a326421a.webp"
  },
  {
    "slug": "llm-long-context",
    "kind": "article",
    "publishedOn": "2026-10-26",
    "author": "Z. Yuan",
    "locale": "en",
    "title": "From 512 to a Million Tokens: How LLM Context Windows Grew",
    "summary": "Add a few zeros and a model can read a whole book? It still has to recognize positions, finish the computation, and pass the reading test. A million tokens comes with several bills.",
    "path": "/content/blog/en/llm-long-context.1893272cba91.md",
    "imageSizes": {
      "/content/blog/assets/llm-long-context/0e698e0187f6.png": {
        "width": 1697,
        "height": 995
      },
      "/content/blog/assets/llm-long-context/9922e97e5772.png": {
        "width": 725,
        "height": 680
      }
    },
    "cover": "/content/blog/assets/llm-long-context/4550d418eafb.webp"
  },
  {
    "slug": "llm-rag-rise-and-decline",
    "kind": "article",
    "publishedOn": "2026-11-08",
    "author": "Z. Yuan",
    "locale": "en",
    "title": "The Rapid Rise and Decline of RAG for LLMs",
    "summary": "From vector-search demos to long context, caching, and agents: what changed in the standard RAG recipe, and why finding the right evidence still matters.",
    "path": "/content/blog/en/llm-rag-rise-and-decline.40c851f0757d.md",
    "imageSizes": {
      "/content/blog/assets/llm-rag-rise-and-decline/37cab20d8830.svg": {
        "width": 400,
        "height": 650
      },
      "/content/blog/assets/llm-rag-rise-and-decline/b9536ff6113d.svg": {
        "width": 400,
        "height": 570
      },
      "/content/blog/assets/llm-rag-rise-and-decline/fdbf20cc6b23.svg": {
        "width": 400,
        "height": 476
      },
      "/content/blog/assets/llm-rag-rise-and-decline/aac1f052ed02.svg": {
        "width": 400,
        "height": 680
      }
    },
    "cover": "/content/blog/assets/llm-rag-rise-and-decline/6245112b8af3.webp",
    "showCover": true
  }
]
