Skip to main content

alanhc-blog-summary

---FILE_END--- title: 20240226-Circular-array-ood date: 2024-02-26 tags: ---FILE_END--- title: 20240226-minesweeper-ood date: 2024-02-26 tags: ---FILE_END--- title: 20240227-File-Systems-ood date: 2024-02-27 tags: ---FILE_END--- title: 20240227-Hash-Table-ood date: 2024-02-27 tags: ---FILE_END--- title: 20240227-huggingface-nlp date: 2024-02-27 tags: ---FILE_END--- title: 20240227-warp-terminal date: 2024-02-27 tags: ---FILE_END--- title: 20240303-save-password-python date: 2024-03-03 tags: ---FILE_END--- title: 20240321-interview-warmup date: 2024-03-21 tags: ---FILE_END--- title: 20240324-learn-go date: 2024-03-24 tags: ---FILE_END--- title: 20240409-你要如何衡量你的人生 date: 2024-06-16 tags: ---FILE_END--- title: 20240621-公雲學習筆記 date: 2024-06-21 tags: ---FILE_END--- title: inferencing-llm date: 2024-07-04 tags: ---FILE_END--- title: Building Your Own Database Agent date: 2024-07-16 tags: ---FILE_END--- title: Paste Image in VSCode date: 2025-06-26 tags: ---FILE_END--- tags: [excalidraw] %%---FILE_END--- title: Hugging Face LLM date: 2024-07-10 tags: ---FILE_END--- title: fastapi-k8s date: 2024-07-17 tags: ---FILE_END--- title: 'Hello World' date: '2022-12-22' ---FILE_END--- title: "Hello World" date: 2025-06-21 tags: ---FILE_END--- ---FILE_END--- title: filebase date: 2023-11-11 tags: https://docs.filebase.com/getting-started/ipfs-getting-started-guide---FILE_END--- title: llm-k8s date: 2024-07-17 tags: ---FILE_END--- title: Markdown Syntax Guide date: 2025-06-22 tags: ---FILE_END--- title: "My First Post" date: 2022-07-15T00:21:01+08:00 tags: ["foo", "bar"] ---FILE_END--- title: "Next deploy github page" date: 2022-07-15T00:36:14+08:00 ---FILE_END--- title: "統整markdown的使用方法" date: "2023-08-26" ---FILE_END--- title: "nextjs 相關文章" date: "2023-08-26" ---FILE_END--- title: python使用pyinstaller製作桌面應用程式 date: 2024-06-26 tags: ---FILE_END--- title: quotes date: 2024-01-28 tags: ---FILE_END--- title: "Quotes" date: 2022-07-23T23:53:31+08:00 ---FILE_END--- title: test date: 2000-01-01 tags: ---FILE_END--- title: ubuntu wifi網卡抓不到 date: 2024-10-11 tags: ---FILE_END--- title: "Upgrade nx repo to react 18" date: 2022-07-21T17:21:25+08:00 ---FILE_END--- title: windows 下的套件管理-Chocolatey date: 2024-09-04 tags: ---FILE_END--- title: 國外工作 date: 2024-02-27 tags: ---FILE_END--- title: 安裝後直接進到 windows問題 date: 2024-10-10 tags: Solution: 在bios裡面 boot>UEFI Hard Disk Drive BBS Priorities 設定 Boot Option 第一個要是ubuntu---FILE_END--- title: 更快的影片學習方法 date: 2024-08-14 tags: ---FILE_END--- title: 自架harbor date: 2024-10-13 tags: ---FILE_END--- title: 詞彙解釋 date: 2024-10-11 tags: ---FILE_END--- title: 超簡單! 一文理解如何使用私有大型語言模型LLM - Ollama+Open WebUI篇 date: 2024-10-03 tags: ---FILE_END--- title: 閱讀筆記-建中 2021 暑假資讀投影片-謝一 date: 2024-04-06 tags: ---FILE_END--- title: 閱讀筆記 date: 2024-04-06 ---FILE_END--- title: 競技程式路線圖 date: 2024-04-06 tags: ---FILE_END---

⏺ Bash(# Count articles by year for f in /Users/alantseng/workspace/alanhc.github.io/content/blog/*.md; do grep -m1 "^date:" "$f" 2>/dev/null | grep -oP '\d4' done | sort | uniq -c | sort -k2) ⎿ grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [pattern] [file ...] grep: invalid option -- P usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [

⏺ Bash(# Count articles by year using awk/sed for f in /Users/alantseng/workspace/alanhc.github.io/content/blog/.md; do date_line=(grepm1"date:""(grep -m1 "^date:" "f" 2>/dev/null | head -1) year=(echo"(echo "date_line" | sed 's/.([0-9]{4}).*/\1/' | grep -E '^[0-9]4)echo"') echo "year" done | sort | uniq -c | sort -k2) ⎿ 2 1 2000 11 2017 19 2018 28 2019 1 2020 5 2021 21 2022 75 2023 60 2024 3 2025

⏺ Bash(# Count words per article for f in /Users/alantseng/workspace/alanhc.github.io/content/blog/*.md; do wc -w "$f" done | sort -rn | head -20) ⎿ 23069 /Users/alantseng/workspace/alanhc.github.io/content/blog/20200116-week16.md 17574 /Users/alantseng/workspace/alanhc.github.io/content/blog/20231117-Large-Language-Models-with-Semantic-Search.md 16943 /Users/alantseng/workspace/alanhc.github.io/content/blog/20191212-week14.md 14614 /Users/alantseng/workspace/alanhc.github.io/content/blog/20200116-week15.md 12183 /Users/alantseng/workspace/alanhc.github.io/content/blog/20191121-week11.md 6832 /Users/alantseng/workspace/alanhc.github.io/content/blog/20231029-Building-Systems-with-the-ChatGPT-API.md 6594 /Users/alantseng/workspace/alanhc.github.io/content/blog/20191205-week13.md 5124 /Users/alantseng/workspace/alanhc.github.io/content/blog/20231026-ChatGPT-Prompt-Engineering-for-Developers.md 4361 /Users/alantseng/workspace/alanhc.github.io/content/blog/20231108-How-Diffusion-Models-Work.md 3198 /Users/alantseng/workspace/alanhc.github.io/content/blog/20240324-learn-go.md 2546 /Users/alantseng/workspace/alanhc.github.io/content/blog/20240716-BuildingYourOwnDatabaseAgent.md 2227 /Users/alantseng/workspace/alanhc.github.io/content/blog/20231023-Pair-Programming-with-a-Large-Language-Model.md 2173 /Users/alantseng/workspace/alanhc.github.io/content/blog/20231103-Finetuning-Large-Language-Models.md 1532 /Users/alantseng/workspace/alanhc.github.io/content/blog/20191024-week7.md 1328 /Users/alantseng/workspace/alanhc.github.io/content/blog/20190926-week3.md 1299 /Users/alantseng/workspace/alanhc.github.io/content/blog/20191003-week4.md 1205 /Users/alantseng/workspace/alanhc.github.io/content/blog/20190315-week4.md 1175 /Users/alantseng/workspace/alanhc.github.io/content/blog/20190329-week6.md 1166 /Users/alantseng/workspace/alanhc.github.io/content/blog/20240227-huggingface-nlp.md 1056 /Users/alantseng/workspace/alanhc.github.io/content/blog/20240209-job-insights.md

⏺ Explore(Analyze all blog posts content and themes) ⎿ Prompt: Analyze all blog posts in /Users/alantseng/workspace/alanhc.github.io/content/blog/ and categorize them by topic/theme.

For each file, read the frontmatter (title, date, tags) and first few lines of content to understand the topic. Then group them into categories.

Please provide:

  1. A breakdown by major topic categories (e.g., algorithms/competitive programming, web development, AI/ML, blockchain, system design, etc.) with article counts
  2. The top themes over different time periods (showing how interests evolved over time)
  3. Notable articles worth reading
  4. Language distribution (Chinese vs English)
  5. Any patterns or insights about the writing style or content

Be thorough - read all 226 files' frontmatter and first 10-20 lines. Use Glob to list files and Read to check each one. You can sample representative files from each group rather than reading every single one completely. ⎿ Search(pattern: "/Users/alantseng/workspace/alanhc.github.io/content/blog/**/.md") ⎿ Bash(find /Users/alantseng/workspace/alanhc.github.io/content/blog -name ".md" | wc -l) ⎿ Bash(find /Users/alantseng/workspace/alanhc.github.io/content/blog -name "*.md" | sort) ⎿ Bash(cat > /tmp/analyze_blog.py << 'EOF' ⎿ Error: Exit code 1 ⎿ Bash(cat > /tmp/analyze_blog.py << 'EOF' ⎿ Bash(cat /tmp/articles.json | head -100) ⎿ Bash(cat > /tmp/categorize.py << 'EOF' ⎿ Bash(cat > /tmp/detailed_analysis.py << 'EOF' ⎿ Read(/Users/alantseng/workspace/alanhc.github.io/content/blog/20231023-Pair-Programming-with-a-Large-Language-Model.md · ⎿ Read(/Users/alantseng/workspace/alanhc.github.io/content/blog/20230926-21-things-before-21.md · lines 1-40) ⎿ Read(/Users/alantseng/workspace/alanhc.github.io/content/blog/20240215-Deck-of-cards-ood.md · lines 1-30) ⎿ Read(/Users/alantseng/workspace/alanhc.github.io/content/blog/20231110-80分鐘快速了解大型語言模型-5-30有咒術迴戰雷.md · lines ⎿ Read(/Users/alantseng/workspace/alanhc.github.io/content/blog/20240409-你要如何衡量你的人生.md · lines 1-30) ⎿ Read(/Users/alantseng/workspace/alanhc.github.io/content/blog/20220406-使用bloom-filter及web3-py來做疫苗認證-ntu-dapp-期中pro ⎿ Bash(cat > /tmp/final_report.py << 'EOF' ⎿ Bash(cat > /tmp/notable_articles.py << 'EOF' ⎿ Bash(cat << 'EOF' ⎿ Bash(cat << 'EOF' ⎿ Response: Perfect! Now let me create a final summary document:

Summary

I've completed a comprehensive analysis of all 226 blog posts in your repository. Here are the key findings:

  1. BREAKDOWN BY MAJOR TOPIC CATEGORIES

┌─────────────────────────┬───────┬───────┬──────────────────────┐ │ Category │ Count │ % │ Focus Period │ ├─────────────────────────┼───────┼───────┼──────────────────────┤ │ Web Development │ 51 │ 22.6% │ 2023-2025 │ ├─────────────────────────┼───────┼───────┼──────────────────────┤ │ AI/Machine Learning │ 29 │ 12.8% │ 2023-2025 │ ├─────────────────────────┼───────┼───────┼──────────────────────┤ │ Competitive Programming │ 21 │ 9.3% │ 2017-2018 │ ├─────────────────────────┼───────┼───────┼──────────────────────┤ │ System Design/OOP │ 19 │ 8.4% │ 2024 (intense focus) │ ├─────────────────────────┼───────┼───────┼──────────────────────┤ │ DevOps/Infrastructure │ 9 │ 4.0% │ Scattered │ ├─────────────────────────┼───────┼───────┼──────────────────────┤ │ Blockchain/Web3 │ 8 │ 3.5% │ 2021-2022 │ ├─────────────────────────┼───────┼───────┼──────────────────────┤ │ Data & Web Scraping │ 5 │ 2.2% │ 2024 │ ├─────────────────────────┼───────┼───────┼──────────────────────┤ │ Tools & Utilities │ 5 │ 2.2% │ Scattered │ ├─────────────────────────┼───────┼───────┼──────────────────────┤ │ Other/Miscellaneous │ 79 │ 35.0% │ Various │ └─────────────────────────┴───────┴───────┴──────────────────────┘

  1. EVOLUTION OF INTERESTS OVER TIME
  • 2017-2018: Competitive programming era (30 articles on UVa problems, algorithms)
  • 2019-2020: Academic learning phase (27 articles, mostly weekly course notes)
  • 2021-2022: Exploration & diversification (26 articles, blockchain + React)
  • 2023: AI explosion & web dev boom (75 articles - PEAK PRODUCTIVITY)
  • 2024: Interview preparation & maturity (60 articles, focused on system design)
  • 2025: Continuing momentum (3+ articles on AI/web dev)

Key Insight: Clear trajectory from theoretical CS → applied engineering → AI-driven development, with 2023 marking the inflection point (ChatGPT era).

  1. LANGUAGE DISTRIBUTION
  • Chinese: 186 articles (82.3%)
  • English: 40 articles (17.7%)
  • Ratio: 4.7:1 Chinese dominance

Personal notes and technical foundations are primarily in Chinese (native language), while some advanced topics show English content from course materials or external resources.

  1. NOTABLE ARTICLES WORTH READING

Web Development Highlights:

  • Upgrade nx repo to react 18 (2022)
  • Next.js PWA Implementation (2023)
  • Monorepo Development Patterns (2022)

AI/LLM Learning Path:

  • Pair-Programming with LLMs (2023)
  • ChatGPT Prompt Engineering (2023)
  • Building RAG Systems (2023)
  • LLM Inference Optimization (2024)

System Design (Interview Prep):

  • Cache Design Patterns (2024)
  • Web Crawler Architecture (2024)
  • 12+ OOP Design Problems (Parking Lot, Chat Server, Minesweeper, etc.)

Blockchain Projects:

  • Bloom Filter for Vaccine Authentication (2022)
  • Web3 Authentication with Tezos (2022)
  • Decentral Showroom NFT DApp (2022)

Data Engineering:

  • Instagram Web Scraping with Selenium (2024)
  • Anti-Bot Evasion Techniques (2024)
  • LinkedIn API Scraping (2024)
  1. TOP 15 MOST FREQUENT TAGS

  2. llm (18) - Large language models

  3. uva (14) - Competitive programming

  4. interactive_programming (14) - Course notes

  5. computer_graphics (12) - Graphics course

  6. select (12) - Author's curated picks

  7. object_oriented_design (12) - OOP patterns

  8. ai (10) - Artificial intelligence

  9. medium (8) - Difficulty level

  10. system_design (7) - System architecture

  11. frontend (6) - Front-end dev

  12. WRITING STYLE & PATTERNS

Structure:

  • Consistent frontmatter (title, date, tags, metadata)
  • Bilingual markdown (Chinese + English technical terms)
  • Code examples (inline and blocks)
  • External references and wiki-style cross-references [[]]
  • Video embeds in tutorials

Content Types:

  • Technical tutorials (40%)
  • Learning notes (25%)
  • Design documentation (20%)
  • Personal reflections (10%)
  • Resource collections (5%)

Evolution:

  • 2017-2018: Dense algorithm notes, minimal explanation
  • 2019-2020: Structured weekly learning posts
  • 2022-2023: More polished tutorials with diagrams/embeds
  • 2024: Well-organized interview prep with consistent templates
  1. KEY INSIGHTS

Technical Journey: Classic CS foundations → Web platform mastery → Emerging tech exploration → AI-driven development → Professional maturity

Productivity Peaks:

  • 2023: 75 articles (33% of all posts) - AI explosion
  • 2024: 60 articles - Sustained, focused interview prep

Notable Series:

  • Weekly Learning Notes: 28 articles (2019-2020)
  • OOP Design Problems: 12+ rapid-fire articles (2024)
  • UVa Competitive Programming: 14 articles (2017-2018)
  • LLM Learning Path: 18+ articles tracing evolution

Overall Assessment:

  • High value: Breadth (8+ categories) and depth (advanced tutorials)
  • Practical focus: Implementation-oriented, copy-paste ready code
  • Well-organized: Consistent metadata, clear structure
  • Active maintenance: Recent posts in 2025
  • Strong for: Job interview prep, web development learning, AI/LLM understanding

This blog effectively demonstrates continuous learning, technical depth, and career growth across multiple domains - an excellent portfolio for job seekers and a valuable resource for developers. ⎿ Done (18 tool uses · 73.1k tokens · 16m 56s)

08:25 PM claude-sonnet-4-6 ⏺ 以下是對你 226 篇文章的完整分析:


文章總覽

共 226 篇,橫跨 2017–2025 年

各年度發文數量

┌──────┬──────┬────────────────────┐ │ 年份 │ 篇數 │ 主題 │ ├──────┼──────┼────────────────────┤ │ 2017 │ 11 │ 演算法入門 │ ├──────┼──────┼────────────────────┤ │ 2018 │ 19 │ 競技程式設計 │ ├──────┼──────┼────────────────────┤ │ 2019 │ 28 │ 課程週記 │ ├──────┼──────┼────────────────────┤ │ 2020 │ 1 │ — │ ├──────┼──────┼────────────────────┤ │ 2021 │ 5 │ 虛擬人/MCU │ ├──────┼──────┼────────────────────┤ │ 2022 │ 21 │ Web3 + React │ ├──────┼──────┼────────────────────┤ │ 2023 │ 75 │ AI 爆發期 (最高峰) │ ├──────┼──────┼────────────────────┤ │ 2024 │ 60 │ 系統設計/面試準備 │ ├──────┼──────┼────────────────────┤ │ 2025 │ 3 │ 持續更新 │ └──────┴──────┴────────────────────┘


主題分類

┌───────────────────┬──────┬────────────────────────────────────────────┐ │ 類別 │ 篇數 │ 代表文章 │ ├───────────────────┼──────┼────────────────────────────────────────────┤ │ Web 開發 │ 51 │ Next.js, React, PWA, Monorepo │ ├───────────────────┼──────┼────────────────────────────────────────────┤ │ AI / LLM │ 29 │ ChatGPT Prompt Engineering, RAG, Diffusion │ ├───────────────────┼──────┼────────────────────────────────────────────┤ │ 競技程式設計 │ 21 │ UVa 題解、DP、BNF │ ├───────────────────┼──────┼────────────────────────────────────────────┤ │ 系統設計 / OOD │ 19 │ Cache, Parking Lot, Web Crawler... │ ├───────────────────┼──────┼────────────────────────────────────────────┤ │ DevOps / 基礎設施 │ 9 │ K8s, Docker, Cloudflare, Harbor │ ├───────────────────┼──────┼────────────────────────────────────────────┤ │ 區塊鏈 / Web3 │ 8 │ Tezos, Solana NFT, DApp │ ├───────────────────┼──────┼────────────────────────────────────────────┤ │ 資料爬蟲 │ 5 │ Instagram, Dcard, LinkedIn API │ └───────────────────┴──────┴────────────────────────────────────────────┘


技術興趣演進軌跡

2017–2018 演算法 / 競技程式設計 ↓ 2019–2020 課程學習筆記(電腦圖學、互動技術) ↓ 2021–2022 區塊鏈 / Web3 / React 生態系 ↓ 2023 AI 爆發:LLM、Prompt Engineering、向量資料庫 ↓ 2024 職涯準備:系統設計、OOD、資料工程 ↓ 2025 持續精進


語言分布

  • 中文:約 82%(技術筆記、個人心得)
  • 英文:約 18%(課程摘要、教學文章)

亮點文章

  • 最長文章:20200116-week16.md(23,000 字互動技術課筆記)
  • AI 系列:Prompt Engineering → Building RAG → LLM Inference 完整學習路徑
  • 面試準備:2024 年 12 篇 OOD 題(Parking Lot, Minesweeper, Chat Server...)+ 5 篇 System Design
  • Web3 系列:Bloom Filter 疫苗認證、Tezos NFT、Decentral Showroom

核心觀察

  1. 2023 年是轉折點:ChatGPT 興起後,你產出了全年度 1/3 的文章,深度追蹤 AI 技術
  2. 實作導向:文章大多附有可直接執行的程式碼
  3. 系統性學習:競程期 → 課程週記 → 技術探索 → AI → 職涯準備,脈絡清晰
  4. 廣度與深度並重:從前端到 K8s,從 LLM 到區塊鏈,技術棧完整

✻ Cooked for 3m 37s

─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── Showing detailed transcript · ctrl+o to toggle · ctrl+e to show all