[{"content":"","date":"19 August 2026","externalUrl":null,"permalink":"/en/tags/ai/","section":"Tags","summary":"","title":"Ai","type":"tags"},{"content":"AI column: large language models, machine learning, and AI engineering.\n2026 2026-08-19 Getting Started with RAG 2026-08-18 Prompt Engineering in Practice 2026-08-17 AI Technology Overview ","date":"19 August 2026","externalUrl":null,"permalink":"/en/ai/","section":"AI","summary":"AI column: large language models, machine learning, and AI engineering.\n2026 2026-08-19 Getting Started with RAG 2026-08-18 Prompt Engineering in Practice 2026-08-17 AI Technology Overview ","title":"AI","type":"ai"},{"content":" Why RAG # LLM knowledge has a cutoff date and can\u0026rsquo;t cover private documents. Retrieval-augmented generation (RAG) first retrieves relevant content from a knowledge base, then has the model answer based on it — sharply reducing hallucinations.\nWorkflow # Offline indexing: chunk documents, embed them, store in a vector DB Online retrieval: embed the question and fetch the most similar chunks Generation: stitch retrieved chunks into the prompt and let the LLM answer Key points # Chunking: size and overlap affect retrieval quality Hybrid search: vector + keyword (BM25) complement each other Reranking: fine-tune relevance of final answers Evaluation: measure continuously with RAGAS and similar tools Summary # RAG turns LLMs from \u0026ldquo;generic talk\u0026rdquo; into \u0026ldquo;evidence-based answers\u0026rdquo;. It\u0026rsquo;s one of the most common patterns for enterprise LLM adoption.\n","date":"19 August 2026","externalUrl":null,"permalink":"/en/ai/rag-intro/","section":"AI","summary":"Why RAG # LLM knowledge has a cutoff date and can’t cover private documents. Retrieval-augmented generation (RAG) first retrieves relevant content from a knowledge base, then has the model answer based on it — sharply reducing hallucinations.\n","title":"Getting Started with RAG","type":"ai"},{"content":"","date":"19 August 2026","externalUrl":null,"permalink":"/en/tags/rag/","section":"Tags","summary":"","title":"Rag","type":"tags"},{"content":"","date":"19 August 2026","externalUrl":null,"permalink":"/en/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"Welcome to my blog! This site is built with Hugo and the Blowfish theme, with full support for Chinese and English (switch languages from the top-right corner).\nRecent posts are listed below; you can also browse everything from the \u0026ldquo;Posts\u0026rdquo; or \u0026ldquo;Tags\u0026rdquo; pages in the navigation bar.\n","date":"19 August 2026","externalUrl":null,"permalink":"/en/","section":"Welcome","summary":"Welcome to my blog! This site is built with Hugo and the Blowfish theme, with full support for Chinese and English (switch languages from the top-right corner).\nRecent posts are listed below; you can also browse everything from the “Posts” or “Tags” pages in the navigation bar.\n","title":"Welcome","type":"page"},{"content":"","date":"18 August 2026","externalUrl":null,"permalink":"/en/tags/llm/","section":"Tags","summary":"","title":"Llm","type":"tags"},{"content":" What is prompt engineering # A prompt is the interface to a large language model. Prompt engineering designs that input so the model reliably produces high-quality output.\nThe four steps # Set the role: \u0026ldquo;You are a senior DBA\u0026rdquo; Provide context: background and constraints Specify format: \u0026ldquo;output as a table\u0026rdquo;, \u0026ldquo;answer in three steps\u0026rdquo; Give examples: one input-output pair (few-shot) Comparison # ❌ \u0026ldquo;Write me a query\u0026rdquo;\n✅ \u0026ldquo;You are a PostgreSQL expert. Table orders has user_id, amount, created_at. Write a SQL that sums spending per user last month, shown as a table.\u0026rdquo;\nCommon pitfalls # Overly long prompts dilute the key points Too many tasks in one request Ignoring output-format constraints Summary # Prompt engineering is not magic — it\u0026rsquo;s structured communication. State the requirement clearly and the model behaves far more consistently.\n","date":"18 August 2026","externalUrl":null,"permalink":"/en/ai/prompt-engineering/","section":"AI","summary":"What is prompt engineering # A prompt is the interface to a large language model. Prompt engineering designs that input so the model reliably produces high-quality output.\n","title":"Prompt Engineering in Practice","type":"ai"},{"content":" Machine learning and deep learning # Machine learning lets programs learn patterns from data automatically; deep learning uses multi-layer neural networks to excel at vision, speech, and text tasks.\nLarge language models (LLMs) # Built on the Transformer architecture, LLMs understand and generate natural language — powering chatbots, code generation, and knowledge Q\u0026amp;A.\nAI engineering practices # Prompt engineering Retrieval-augmented generation (RAG) Fine-tuning and evaluation This column will keep documenting AI learning and engineering practice.\n","date":"17 August 2026","externalUrl":null,"permalink":"/en/ai/ai-overview/","section":"AI","summary":"Machine learning and deep learning # Machine learning lets programs learn patterns from data automatically; deep learning uses multi-layer neural networks to excel at vision, speech, and text tasks.\n","title":"AI Technology Overview","type":"ai"},{"content":"","date":"17 August 2026","externalUrl":null,"permalink":"/en/tags/cloud/","section":"Tags","summary":"","title":"Cloud","type":"tags"},{"content":"Cloud column: cloud services, containers, Kubernetes, and infrastructure as code.\n2026 2026-08-17 Managing Cloud Resources with Terraform 2026-08-16 Cloud Computing Basics 2026-08-16 Docker Containerization Basics ","date":"17 August 2026","externalUrl":null,"permalink":"/en/cloud/","section":"Cloud Computing","summary":"Cloud column: cloud services, containers, Kubernetes, and infrastructure as code.\n2026 2026-08-17 Managing Cloud Resources with Terraform 2026-08-16 Cloud Computing Basics 2026-08-16 Docker Containerization Basics ","title":"Cloud Computing","type":"cloud"},{"content":" Why IaC # Clicking through consoles is hard to reuse and audit. Infrastructure as code (IaC) describes resources in code, making changes reviewable and reversible.\nTerraform core concepts # Configuration: *.tf files declare the desired state State: maps real resources to the configuration Provider: plugins for cloud vendors (AWS, Alibaba Cloud, etc.) Plan / Apply: preview changes, then execute Example # resource \u0026#34;aws_instance\u0026#34; \u0026#34;web\u0026#34; { ami = \u0026#34;ami-0c55b159cbfafe1f0\u0026#34; instance_type = \u0026#34;t3.micro\u0026#34; } Best practices # Keep state in a remote backend (S3 + locking) to avoid conflicts Use modules to reuse common resource patterns Handle secrets via variables and encrypted storage Summary # Terraform makes cloud management as rigorous as writing code — declarative, auditable, reversible. It\u0026rsquo;s the bedrock of modern ops.\n","date":"17 August 2026","externalUrl":null,"permalink":"/en/cloud/terraform-iac/","section":"Cloud Computing","summary":"Why IaC # Clicking through consoles is hard to reuse and audit. Infrastructure as code (IaC) describes resources in code, making changes reviewable and reversible.\n","title":"Managing Cloud Resources with Terraform","type":"cloud"},{"content":"","date":"17 August 2026","externalUrl":null,"permalink":"/en/tags/terraform/","section":"Tags","summary":"","title":"Terraform","type":"tags"},{"content":" Three cloud service models # IaaS (Infrastructure as a Service): VMs, storage, and networking, e.g. AWS EC2 PaaS (Platform as a Service): runtimes and middleware, e.g. Heroku SaaS (Software as a Service): ready-to-use applications, e.g. Gmail Containers and Kubernetes # Containers (e.g. Docker) package an app with its dependencies for environment consistency; Kubernetes handles orchestration, scaling, and self-healing.\ndocker run -d -p 80:80 nginx kubectl get pods Infrastructure as code # Manage cloud resources with code using Terraform / Ansible for repeatable, auditable deployments.\n","date":"16 August 2026","externalUrl":null,"permalink":"/en/cloud/cloud-basics/","section":"Cloud Computing","summary":"Three cloud service models # IaaS (Infrastructure as a Service): VMs, storage, and networking, e.g. AWS EC2 PaaS (Platform as a Service): runtimes and middleware, e.g. Heroku SaaS (Software as a Service): ready-to-use applications, e.g. Gmail Containers and Kubernetes # Containers (e.g. Docker) package an app with its dependencies for environment consistency; Kubernetes handles orchestration, scaling, and self-healing.\n","title":"Cloud Computing Basics","type":"cloud"},{"content":"","date":"16 August 2026","externalUrl":null,"permalink":"/en/tags/kubernetes/","section":"Tags","summary":"","title":"Kubernetes","type":"tags"},{"content":"","date":"16 August 2026","externalUrl":null,"permalink":"/en/tags/docker/","section":"Tags","summary":"","title":"Docker","type":"tags"},{"content":" The problem containers solve # \u0026ldquo;It works on my machine\u0026rdquo; — environment drift is an ops nightmare. Containers package the app with its runtime into an image that runs anywhere.\nCore concepts # Image: a read-only template made of layers Container: a running instance of an image; start, stop, remove Volume: persists container data Dockerfile: a declarative recipe for building images Common commands # docker build -t my-app . docker run -d -p 8080:80 my-app docker compose up -d Best practices # Use multi-stage builds to shrink images Run processes in the foreground for easy log collection Pass secrets via env vars or secrets, never bake them in Summary # Docker lowers delivery cost and aligns local with production. Mastering it is the first step on the cloud-native path.\n","date":"16 August 2026","externalUrl":null,"permalink":"/en/cloud/docker-basics/","section":"Cloud Computing","summary":"The problem containers solve # “It works on my machine” — environment drift is an ops nightmare. Containers package the app with its runtime into an image that runs anywhere.\n","title":"Docker Containerization Basics","type":"cloud"},{"content":"Database column: relational databases, PostgreSQL, SQL optimization, and more.\n2026 2026-08-15 Getting Started with PostgreSQL 2026-08-15 SQL Query Performance Tuning 2026-08-14 Database Backup and Recovery Guide 2026-08-13 PostgreSQL Index Tuning in Practice ","date":"15 August 2026","externalUrl":null,"permalink":"/en/db/","section":"Database","summary":"Database column: relational databases, PostgreSQL, SQL optimization, and more.\n2026 2026-08-15 Getting Started with PostgreSQL 2026-08-15 SQL Query Performance Tuning 2026-08-14 Database Backup and Recovery Guide 2026-08-13 PostgreSQL Index Tuning in Practice ","title":"Database","type":"db"},{"content":"","date":"15 August 2026","externalUrl":null,"permalink":"/en/tags/database/","section":"Tags","summary":"","title":"Database","type":"tags"},{"content":" What is PostgreSQL # PostgreSQL is a powerful open-source relational database known for its reliability and extensibility, supporting rich data types, full-text search, JSON, and geospatial processing.\nWhy choose it # Free and open source with an active community ACID transactions and complex queries A rich extension ecosystem (PostGIS, pgvector, and more) Quick start # # Debian/Ubuntu sudo apt install postgresql sudo -u postgres psql CREATE TABLE posts (id serial PRIMARY KEY, title text); INSERT INTO posts (title) VALUES (\u0026#39;Hello PostgreSQL\u0026#39;); This column will keep sharing database practices — stay tuned.\n","date":"15 August 2026","externalUrl":null,"permalink":"/en/db/postgresql-intro/","section":"Database","summary":"What is PostgreSQL # PostgreSQL is a powerful open-source relational database known for its reliability and extensibility, supporting rich data types, full-text search, JSON, and geospatial processing.\n","title":"Getting Started with PostgreSQL","type":"db"},{"content":"","date":"15 August 2026","externalUrl":null,"permalink":"/en/tags/postgresql/","section":"Tags","summary":"","title":"Postgresql","type":"tags"},{"content":"","date":"15 August 2026","externalUrl":null,"permalink":"/en/tags/sql/","section":"Tags","summary":"","title":"Sql","type":"tags"},{"content":" Finding slow queries # Enable the slow-query log: log_min_duration_statement Analyze plans with EXPLAIN ANALYZE Watch pg_stat_statements for the most frequent SQL Common performance killers # Full table scans: missing indexes or conditions that can\u0026rsquo;t use them Implicit type casts: functions on indexed columns disable the index N+1 queries: querying row-by-row inside a loop Large-offset pagination: OFFSET 1000000 gets slower as you page Fixes # Rewrite SQL: drive big tables with small result sets (join order) Use indexes wisely: covering and composite indexes Denormalize judiciously: precomputed summary tables Summary # SQL tuning is about understanding the execution plan. Locate the bottleneck first, then fix it — don\u0026rsquo;t blindly add indexes.\n","date":"15 August 2026","externalUrl":null,"permalink":"/en/db/sql-tuning/","section":"Database","summary":"Finding slow queries # Enable the slow-query log: log_min_duration_statement Analyze plans with EXPLAIN ANALYZE Watch pg_stat_statements for the most frequent SQL Common performance killers # Full table scans: missing indexes or conditions that can’t use them Implicit type casts: functions on indexed columns disable the index N+1 queries: querying row-by-row inside a loop Large-offset pagination: OFFSET 1000000 gets slower as you page Fixes # Rewrite SQL: drive big tables with small result sets (join order) Use indexes wisely: covering and composite indexes Denormalize judiciously: precomputed summary tables Summary # SQL tuning is about understanding the execution plan. Locate the bottleneck first, then fix it — don’t blindly add indexes.\n","title":"SQL Query Performance Tuning","type":"db"},{"content":"","date":"14 August 2026","externalUrl":null,"permalink":"/en/tags/hugo/","section":"Tags","summary":"","title":"Hugo","type":"tags"},{"content":"Hugo is one of the most popular open-source static site generators, known for its speed and simple deployment. This guide walks you through building and publishing your first Hugo site.\nInstalling Hugo # The installation method depends on your operating system:\nmacOS: brew install hugo Ubuntu / Debian: sudo apt install hugo Windows: use Chocolatey or Scoop: choco install hugo Other platforms: download the corresponding binary from the Hugo Releases page Verify the installation:\nhugo version Creating a new site # Use hugo new site to quickly scaffold a site skeleton:\nhugo new site quickstart cd quickstart This generates the standard directory structure: content/, layouts/, static/, and more.\nAdding a theme # A Hugo site needs a theme to render pages. Take Hextra as an example:\ngit init git submodule add https://github.com/imfing/hextra.git themes/hextra Then declare the theme in hugo.toml:\ntheme = \u0026#39;hextra\u0026#39; Writing your first post # Use hugo new to create a post, with front matter in TOML format:\nhugo new posts/my-first-post.md The front matter contains metadata such as date and title, while the body is written in Markdown, supporting code blocks, tables, images, and more:\n+++ date = \u0026#39;2026-08-14T17:55:41+08:00\u0026#39; draft = false title = \u0026#39;My First Post\u0026#39; +++ ## Introduction This is **bold** text and this is *italic* text. Local preview # Start the development server and Hugo will auto-refresh the page on file changes:\nhugo server -D Open http://localhost:1313 in your browser for a live preview.\nBuilding and deploying # Before publishing, generate the static files:\nhugo The output goes to the public/ directory by default; host it on GitHub Pages, Netlify, or Vercel to go live.\nSummary # Step Command Create site hugo new site quickstart Add theme git submodule add \u0026lt;theme-url\u0026gt; New post hugo new posts/xxx.md Local preview hugo server -D Build \u0026amp; deploy hugo The Hugo ecosystem is mature and the community is active. Whether it is a personal blog or a documentation site, Hugo is a trustworthy choice. Try it out now!\n","date":"14 August 2026","externalUrl":null,"permalink":"/en/posts/hugo-quickstart-guide/","section":"Posts","summary":"Hugo is one of the most popular open-source static site generators, known for its speed and simple deployment. This guide walks you through building and publishing your first Hugo site.\n","title":"Hugo Quickstart Guide","type":"posts"},{"content":" 2026 2026-08-14 Hugo Quickstart Guide 2026-08-14 My First Post 2026-08-12 Static Site Generators Compared 2026-08-11 Markdown Writing Tips 2026-08-10 Going Live: From Zero to Deployment 2025 2025-12-28 Tech Year in Review 2025 ","date":"14 August 2026","externalUrl":null,"permalink":"/en/posts/","section":"Posts","summary":" 2026 2026-08-14 Hugo Quickstart Guide 2026-08-14 My First Post 2026-08-12 Static Site Generators Compared 2026-08-11 Markdown Writing Tips 2026-08-10 Going Live: From Zero to Deployment 2025 2025-12-28 Tech Year in Review 2025 ","title":"Posts","type":"posts"},{"content":"","date":"14 August 2026","externalUrl":null,"permalink":"/en/tags/static-site/","section":"Tags","summary":"","title":"Static-Site","type":"tags"},{"content":"","date":"14 August 2026","externalUrl":null,"permalink":"/en/tags/tutorial/","section":"Tags","summary":"","title":"Tutorial","type":"tags"},{"content":"","date":"14 August 2026","externalUrl":null,"permalink":"/en/tags/hello/","section":"Tags","summary":"","title":"Hello","type":"tags"},{"content":"","date":"14 August 2026","externalUrl":null,"permalink":"/en/tags/markdown/","section":"Tags","summary":"","title":"Markdown","type":"tags"},{"content":" Introduction # This is bold text and this is italic text.\nVisit the Hugo website!\n","date":"14 August 2026","externalUrl":null,"permalink":"/en/posts/my-first-post/","section":"Posts","summary":"Introduction # This is bold text and this is italic text.\nVisit the Hugo website!\n","title":"My First Post","type":"posts"},{"content":"","date":"14 August 2026","externalUrl":null,"permalink":"/en/tags/backup/","section":"Tags","summary":"","title":"Backup","type":"tags"},{"content":" Why backups matter # Data is the core asset of any system. Hardware failure, human error, ransomware — any incident can cause irrecoverable loss. Data without a backup is not data.\nBackup strategies # Full backup: periodic complete copies, easy to restore Incremental backup: only the changes, saving space WAL archiving: enables point-in-time recovery (PITR) Common tools # PostgreSQL\u0026rsquo;s built-in pg_dump / pg_basebackup pgBackRest: open source, parallel and encrypted Cloud snapshots: simple, but coarse-grained recovery Key practices # Run restore drills regularly to prove backups work Keep copies off-site against facility-level failures Monitor backup jobs and alert on failures Summary # A backup counts only if it can be restored. Make drills part of the routine so you stay calm when it matters.\n","date":"14 August 2026","externalUrl":null,"permalink":"/en/db/backup-recovery/","section":"Database","summary":"Why backups matter # Data is the core asset of any system. Hardware failure, human error, ransomware — any incident can cause irrecoverable loss. Data without a backup is not data.\n","title":"Database Backup and Recovery Guide","type":"db"},{"content":" Why indexes matter # Without an index, table scans are O(n) — queries degrade quickly as data grows. A good index brings lookups down to O(log n).\nRead the plan first # EXPLAIN ANALYZE SELECT * FROM orders WHERE user_id = 42; The plan tells you whether it\u0026rsquo;s a sequential scan or an index scan, guiding your index decisions.\nCommon index types # B-tree: the default; great for equality and range queries GIN: full-text search and array/JSON containment BRIN: large tables with physical ordering Common pitfalls # Over-indexing: write amplification and storage cost Indexing low-selectivity columns: little payoff Ignoring composite index column order: the leftmost-prefix rule Summary # There is no silver bullet. Start from the execution plan and watch pg_stat_user_indexes to make sound decisions.\n","date":"13 August 2026","externalUrl":null,"permalink":"/en/db/postgresql-index-tuning/","section":"Database","summary":"Why indexes matter # Without an index, table scans are O(n) — queries degrade quickly as data grows. A good index brings lookups down to O(log n).\n","title":"PostgreSQL Index Tuning in Practice","type":"db"},{"content":"","date":"12 August 2026","externalUrl":null,"permalink":"/en/tags/jamstack/","section":"Tags","summary":"","title":"Jamstack","type":"tags"},{"content":" Why SSGs # Static site generators (SSGs) compile Markdown and other content into plain HTML, offering speed, security, and simple deployment.\nPopular options # Generator Language Build speed Ecosystem Hugo Go Very fast Rich themes Jekyll Ruby Slower Native GitHub Pages support Astro JS Fast Flexible components Next.js JS Medium App-oriented How to choose # Blazing builds out of the box: Hugo Rely on GitHub Pages defaults: Jekyll Need a component-driven frontend: Astro Summary # There is no single best tool — only the right fit. This site chose Hugo for its speed and Blowfish\u0026rsquo;s multilingual capabilities.\n","date":"12 August 2026","externalUrl":null,"permalink":"/en/posts/ssg-comparison/","section":"Posts","summary":"Why SSGs # Static site generators (SSGs) compile Markdown and other content into plain HTML, offering speed, security, and simple deployment.\n","title":"Static Site Generators Compared","type":"posts"},{"content":" Why Markdown # Markdown is concise and focuses on content — the de facto standard for technical writing. Combined with a static site generator, publishing is free and instant.\nPractical tips # Blockquotes: \u0026gt; text to highlight key points or cite others Task lists: - [ ] todo / - [x] done to track writing progress Code blocks: annotate the language for syntax highlighting; use backticks inline Tables: | col1 | col2 | for comparisons Advanced # Use footnotes to keep the body clean while citing sources Use anchor links for long-post navigation Keep images in a resources folder so the builder optimizes them Summary # Good tools make you want to write. Markdown has no learning curve, yet it\u0026rsquo;s powerful enough to power an entire blog.\n","date":"11 August 2026","externalUrl":null,"permalink":"/en/posts/markdown-tips/","section":"Posts","summary":"Why Markdown # Markdown is concise and focuses on content — the de facto standard for technical writing. Combined with a static site generator, publishing is free and instant.\n","title":"Markdown Writing Tips","type":"posts"},{"content":"","date":"11 August 2026","externalUrl":null,"permalink":"/en/tags/writing/","section":"Tags","summary":"","title":"Writing","type":"tags"},{"content":"","date":"10 August 2026","externalUrl":null,"permalink":"/en/tags/blog/","section":"Tags","summary":"","title":"Blog","type":"tags"},{"content":"","date":"10 August 2026","externalUrl":null,"permalink":"/en/tags/deploy/","section":"Tags","summary":"","title":"Deploy","type":"tags"},{"content":" Why # I always wanted my own blog to collect notes and insights. After comparing options, I settled on Hugo + Blowfish: fast builds, a beautiful theme, and built-in multilingual support.\nSteps # Scaffold: hugo new site quickstart Add theme: install Blowfish as a git submodule to track upstream updates Configure i18n: Chinese as default, English under /en/ Write content: posts live in content/zh-cn/ and content/en/ Going live # Deploying a static site is trivial — host the public/ directory generated by hugo on any platform.\nSummary # From zero to live in an afternoon. Hugo\u0026rsquo;s ecosystem is mature and well-documented — highly recommended for anyone who wants their own site.\n","date":"10 August 2026","externalUrl":null,"permalink":"/en/posts/going-live/","section":"Posts","summary":"Why # I always wanted my own blog to collect notes and insights. After comparing options, I settled on Hugo + Blowfish: fast builds, a beautiful theme, and built-in multilingual support.\n","title":"Going Live: From Zero to Deployment","type":"posts"},{"content":"","date":"28 December 2025","externalUrl":null,"permalink":"/en/tags/review/","section":"Tags","summary":"","title":"Review","type":"tags"},{"content":"","date":"28 December 2025","externalUrl":null,"permalink":"/en/tags/tech/","section":"Tags","summary":"","title":"Tech","type":"tags"},{"content":" LLMs move from demo to production # In 2025, large language models left the \u0026ldquo;toy\u0026rdquo; stage and entered real business scenarios: code completion, customer support, and document processing. RAG and agents became the mainstream pattern for enterprise adoption, while inference costs kept falling.\nDatabases: PostgreSQL keeps leading # The PostgreSQL ecosystem kept growing: PG 18 brought performance and parallelism improvements, extensions passed 500, and vector search and graph capabilities gave PG new life in the AI era.\nCloud-native gets finer-grained # Containers and Kubernetes are the baseline. The conversation shifted to FinOps, platform engineering, and observability, with multi-cluster and multi-cloud governance as the new challenges.\nDeveloper experience is a differentiator # From AI-assisted coding to one-click dev environments, toolchains increasingly focus on developer experience. Fast onboarding and fast feedback decide which tools win.\nSummary # 2025 was a year of rapid iteration — and the year AI truly landed in production. Here\u0026rsquo;s to 2026 and more products that keep complexity for themselves and simplicity for users.\n","date":"28 December 2025","externalUrl":null,"permalink":"/en/posts/tech-review-2025/","section":"Posts","summary":"LLMs move from demo to production # In 2025, large language models left the “toy” stage and entered real business scenarios: code completion, customer support, and document processing. RAG and agents became the mainstream pattern for enterprise adoption, while inference costs kept falling.\n","title":"Tech Year in Review 2025","type":"posts"},{"content":" About this site # This is a personal blog built with the Hugo static site generator and the Blowfish theme, modeled after the bilingual structure of vonng.com/pigsty: Chinese by default, an English version under /en/, and posts grouped by year.\nTech stack # Hugo: v0.165.0 Theme: Blowfish (multi-language, search, dark mode) Content: content/zh-cn/ (Chinese) + content/en/ (English) Author # Author Avatar Bio Site owner Runs this blog, happy to connect Contact # Feel free to reach out via GitHub.\n","externalUrl":null,"permalink":"/en/about/","section":"Welcome","summary":"About this site # This is a personal blog built with the Hugo static site generator and the Blowfish theme, modeled after the bilingual structure of vonng.com/pigsty: Chinese by default, an English version under /en/, and posts grouped by year.\n","title":"About","type":"page"},{"content":"","externalUrl":null,"permalink":"/en/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/en/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":"","externalUrl":null,"permalink":"/en/series/","section":"Series","summary":"","title":"Series","type":"series"}]