<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>oranhe.com · Blog</title><description>Notes on code, systems and artificial intelligence. Questions, experiments and things learned along the way.</description><link>https://blog.oranhe.com/</link><language>en</language><item><title>Running Models Locally</title><link>https://blog.oranhe.com/en/posts/local-small-models/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/local-small-models/</guid><description>Running small models on my own computer, with notes on environment setup, model selection, and inference practice.</description><pubDate>Sat, 14 Feb 2026 16:00:00 GMT</pubDate></item><item><title>BackdoorIndicator — Proactive Backdoor Detection with OOD Data</title><link>https://blog.oranhe.com/en/posts/backdoor-indicator/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/backdoor-indicator/</guid><description>Reading BackdoorIndicator: using out-of-distribution data to proactively detect backdoor attacks in federated learning.</description><pubDate>Fri, 13 Feb 2026 16:00:00 GMT</pubDate></item><item><title>GoList</title><link>https://blog.oranhe.com/en/posts/golist/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/golist/</guid><description>Building a task-list backend with Go and Kratos: service design and development notes.</description><pubDate>Thu, 12 Feb 2026 16:00:00 GMT</pubDate></item><item><title>Inversion of control and dependency injection</title><link>https://blog.oranhe.com/en/posts/inversion-of-control/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/inversion-of-control/</guid><description>Understanding inversion of control and dependency injection, and their role in Go projects.</description><pubDate>Thu, 12 Feb 2026 16:00:00 GMT</pubDate></item><item><title>The Kratos microservice framework</title><link>https://blog.oranhe.com/en/posts/kratos/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/kratos/</guid><description>Learning Kratos&apos;s project structure, service definitions, and microservice development workflow.</description><pubDate>Mon, 09 Feb 2026 16:00:00 GMT</pubDate></item><item><title>GoLink</title><link>https://blog.oranhe.com/en/posts/golink/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/golink/</guid><description>The design and implementation of a short-link project: generation strategy, database, cache, and redirection.</description><pubDate>Tue, 03 Feb 2026 16:00:00 GMT</pubDate></item><item><title>The go-zero API language</title><link>https://blog.oranhe.com/en/posts/go-zero-api/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/go-zero-api/</guid><description>Notes on the syntax of the go-zero API description language and how code is generated from it.</description><pubDate>Sat, 24 Jan 2026 16:00:00 GMT</pubDate></item><item><title>go-zero-demo</title><link>https://blog.oranhe.com/en/posts/go-zero-service-demo/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/go-zero-service-demo/</guid><description>Practicing go-zero API, database, and microservice development through a service example.</description><pubDate>Sat, 24 Jan 2026 16:00:00 GMT</pubDate></item><item><title>Protobuf</title><link>https://blog.oranhe.com/en/posts/protobuf/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/protobuf/</guid><description>Notes on Protocol Buffers syntax, message definitions, and usage.</description><pubDate>Thu, 22 Jan 2026 16:00:00 GMT</pubDate></item><item><title>Quarto-Blogs-Template</title><link>https://blog.oranhe.com/en/posts/quarto-blog-template/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/quarto-blog-template/</guid><description>A Quarto blog template centered on writing in Markdown, documenting how content is organized and published.</description><pubDate>Thu, 22 Jan 2026 16:00:00 GMT</pubDate></item><item><title>The Go-Zero microservice framework</title><link>https://blog.oranhe.com/en/posts/go-zero/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/go-zero/</guid><description>Learning go-zero&apos;s framework structure and service development process.</description><pubDate>Tue, 20 Jan 2026 16:00:00 GMT</pubDate></item><item><title>Consul</title><link>https://blog.oranhe.com/en/posts/consul/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/consul/</guid><description>Notes on service discovery, health checks, and basic Consul usage.</description><pubDate>Mon, 19 Jan 2026 16:00:00 GMT</pubDate></item><item><title>Reading DeepSeek papers: architecture, reasoning, and multimodality</title><link>https://blog.oranhe.com/en/posts/deepseek-papers/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/deepseek-papers/</guid><description>A reading guide to DeepSeek V2, V3, R1, VL2, and OCR, separating architecture, training, and deployment.</description><pubDate>Mon, 19 Jan 2026 16:00:00 GMT</pubDate></item><item><title>Infrastructure (golang)</title><link>https://blog.oranhe.com/en/posts/go-infrastructure/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/go-infrastructure/</guid><description>An overview of the infrastructure and common components involved in developing Go services.</description><pubDate>Mon, 19 Jan 2026 16:00:00 GMT</pubDate></item><item><title>Go Hot100: The Three Hash Problems in ACM Style</title><link>https://blog.oranhe.com/en/posts/hot100-acm/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/hot100-acm/</guid><description>Rewriting Two Sum, Group Anagrams, and Longest Consecutive Sequence as standalone Go programs, and explaining the input, output, and edge cases.</description><pubDate>Mon, 19 Jan 2026 16:00:00 GMT</pubDate></item><item><title>PC shortcuts and terminal commands</title><link>https://blog.oranhe.com/en/posts/desktop-shortcuts/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/desktop-shortcuts/</guid><description>Useful Windows, macOS, and Linux shortcuts and command-line reminders.</description><pubDate>Sat, 17 Jan 2026 16:00:00 GMT</pubDate></item><item><title>Git commands and commit conventions</title><link>https://blog.oranhe.com/en/posts/git-guide/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/git-guide/</guid><description>A reference for everyday Git commands, commits, branches, and remote collaboration.</description><pubDate>Sat, 17 Jan 2026 16:00:00 GMT</pubDate></item><item><title>The Go-Kit microservice framework</title><link>https://blog.oranhe.com/en/posts/go-kit/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/go-kit/</guid><description>Learning Go-Kit&apos;s layering approach and microservice components.</description><pubDate>Sat, 17 Jan 2026 16:00:00 GMT</pubDate></item><item><title>Microservice frameworks in Go</title><link>https://blog.oranhe.com/en/posts/go-microservices/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/go-microservices/</guid><description>Notes on organizing services and choosing a Go microservice framework.</description><pubDate>Sat, 17 Jan 2026 16:00:00 GMT</pubDate></item><item><title>Hot100 (Go): Three Hash Table Problems</title><link>https://blog.oranhe.com/en/posts/hot100-go/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/hot100-go/</guid><description>Notes on the approach, complexity, and Go tests for Two Sum, Group Anagrams, and Longest Consecutive Sequence, plus the effect of map ordering.</description></item><item><title>Prompt-&gt;Context-&gt;Skills</title><link>https://blog.oranhe.com/en/posts/prompt-context-skills/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/prompt-context-skills/</guid><description>From prompts to context to tools and agents: a record of how AI interaction has changed.</description></item><item><title>Understanding RAG in One Article</title><link>https://blog.oranhe.com/en/posts/rag-overview/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/rag-overview/</guid><description>Starting from the basic retrieval and generation pipeline, this article covers RAG&apos;s architecture, multimodal extensions, and the problems encountered in practice.</description></item><item><title>Understanding VLM in One Article</title><link>https://blog.oranhe.com/en/posts/vlm-overview/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/vlm-overview/</guid><description>A guide to the basic concepts, training methods, and typical architectures of vision-language models, and how images enter a language model.</description></item><item><title>A Solution for Slow Transfers to a Local Server</title><link>https://blog.oranhe.com/en/posts/ssh-transfer/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/ssh-transfer/</guid><description>Diagnosing slow file transfers to a local server, and recording workable ways to improve them.</description><pubDate>Wed, 10 Dec 2025 16:00:00 GMT</pubDate></item><item><title>Daily Log Maker</title><link>https://blog.oranhe.com/en/posts/daily-log-maker/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/daily-log-maker/</guid><description>A small web tool that turns daily notes into a long, high-resolution image.</description><pubDate>Sat, 22 Nov 2025 16:00:00 GMT</pubDate></item><item><title>Gesture-Fireworks</title><link>https://blog.oranhe.com/en/posts/gesture-fireworks/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/gesture-fireworks/</guid><description>Combines gesture recognition with front-end visuals so the fireworks on screen follow your fingers.</description><pubDate>Sat, 15 Nov 2025 16:00:00 GMT</pubDate></item><item><title>LeetCode — Ling Shen Follow-Along — Sliding Window and Two Pointers — Variable-Length Sliding Window — Longer Is Valid + Shortest + Minimum</title><link>https://blog.oranhe.com/en/posts/sliding-window-variable/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/sliding-window-variable/</guid><description>Follow-along practice with the variable-length sliding window, discussing the validity condition and how to find the shortest window.</description><pubDate>Sat, 15 Nov 2025 16:00:00 GMT</pubDate></item><item><title>LeetCode Follow-Along with Ling: Sliding Window and Two Pointers — Fixed-Length Sliding Window: Basics</title><link>https://blog.oranhe.com/en/posts/sliding-window-fixed/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/sliding-window-fixed/</guid><description>A follow-along on fixed-length sliding windows, using basic problems to understand window movement and state updates.</description><pubDate>Sat, 08 Nov 2025 16:00:00 GMT</pubDate></item><item><title>Installing Jekyll on macOS</title><link>https://blog.oranhe.com/en/posts/jekyll-macos/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/jekyll-macos/</guid><description>Set up Ruby, install Jekyll, and run a local blog on macOS.</description><pubDate>Thu, 23 Oct 2025 16:00:00 GMT</pubDate></item><item><title>Installing Jekyll on Windows</title><link>https://blog.oranhe.com/en/posts/jekyll-windows/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/jekyll-windows/</guid><description>Install Ruby and Jekyll on Windows and prepare a local blog environment.</description><pubDate>Thu, 23 Oct 2025 16:00:00 GMT</pubDate></item><item><title>Building a RAG document QA assistant with the BM25 retrieval algorithm: learning and practice</title><link>https://blog.oranhe.com/en/posts/bm25-rag/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/bm25-rag/</guid><description>From BM25 retrieval to document QA, recording the environment setup, dependency problems, and practical results.</description><pubDate>Mon, 10 Mar 2025 16:00:00 GMT</pubDate></item><item><title>DeepSeek-R1-32B Model Deployment</title><link>https://blog.oranhe.com/en/posts/deepseek-r1-32b/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/deepseek-r1-32b/</guid><description>A record of the deployment environment, run steps, and test results for DeepSeek-R1-32B.</description><pubDate>Fri, 24 Jan 2025 16:00:00 GMT</pubDate></item><item><title>Installing and using g, a Go version manager</title><link>https://blog.oranhe.com/en/posts/go-version-manager/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/go-version-manager/</guid><description>Install g and switch between Go versions.</description><pubDate>Wed, 15 Jan 2025 16:00:00 GMT</pubDate></item><item><title>Open Source Licenses</title><link>https://blog.oranhe.com/en/posts/open-source-licenses/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/open-source-licenses/</guid><description>A summary of common open source licenses and their differences, and an overview of the conventions for using and releasing code.</description><pubDate>Fri, 10 Jan 2025 16:00:00 GMT</pubDate></item><item><title>A Free, High-Definition, Secure, but Troublesome Remote Desktop Connection Solution</title><link>https://blog.oranhe.com/en/posts/remote-desktop/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/remote-desktop/</guid><description>Combining Sunshine, Moonlight, and a virtual display to build a remote desktop streaming solution.</description><pubDate>Fri, 10 Jan 2025 16:00:00 GMT</pubDate></item><item><title>Learning Go (10): pointers and nil</title><link>https://blog.oranhe.com/en/posts/go-basics-10/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/go-basics-10/</guid><description>Part 10 of my Go fundamentals notes: pointers, initialization, swapping values, and nil.</description><pubDate>Sat, 19 Oct 2024 16:00:00 GMT</pubDate></item><item><title>Learning Go (11): interfaces</title><link>https://blog.oranhe.com/en/posts/go-basics-11/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/go-basics-11/</guid><description>Part 11 of my Go fundamentals notes: syntax, examples, and lessons learned.</description><pubDate>Sat, 19 Oct 2024 16:00:00 GMT</pubDate></item><item><title>Learning Go (12): packages and modules</title><link>https://blog.oranhe.com/en/posts/go-basics-12/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/go-basics-12/</guid><description>Separate packages from modules and understand go.mod, go.sum, dependency commands, GOPROXY, and replace.</description><pubDate>Sat, 19 Oct 2024 16:00:00 GMT</pubDate></item><item><title>Learning Go (13): testing</title><link>https://blog.oranhe.com/en/posts/go-basics-13/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/go-basics-13/</guid><description>Part 13 of my Go fundamentals notes: unit tests, table-driven tests, and benchmarks.</description><pubDate>Sat, 19 Oct 2024 16:00:00 GMT</pubDate></item><item><title>Learning Go (9): structs and methods</title><link>https://blog.oranhe.com/en/posts/go-basics-09/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/go-basics-09/</guid><description>Part 9 of my Go fundamentals notes: syntax, examples, and lessons learned.</description><pubDate>Fri, 18 Oct 2024 16:00:00 GMT</pubDate></item><item><title>Learning Go (8): functions, defer, and errors</title><link>https://blog.oranhe.com/en/posts/go-basics-08/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/go-basics-08/</guid><description>Part 8 of my Go fundamentals notes: syntax, examples, and lessons learned.</description><pubDate>Thu, 17 Oct 2024 16:00:00 GMT</pubDate></item><item><title>Learning Go (7): arrays, slices, maps, and lists</title><link>https://blog.oranhe.com/en/posts/go-basics-07/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/go-basics-07/</guid><description>Part 7 of my Go fundamentals notes: syntax, examples, and lessons learned.</description><pubDate>Wed, 16 Oct 2024 16:00:00 GMT</pubDate></item><item><title>Learning Go (6): conditions and loops</title><link>https://blog.oranhe.com/en/posts/go-basics-06/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/go-basics-06/</guid><description>Part 6 of my Go fundamentals notes: syntax, examples, and lessons learned.</description><pubDate>Tue, 15 Oct 2024 16:00:00 GMT</pubDate></item><item><title>Learning Go (5): strings</title><link>https://blog.oranhe.com/en/posts/go-basics-05/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/go-basics-05/</guid><description>Part 5 of my Go fundamentals notes: syntax, examples, and lessons learned.</description><pubDate>Sun, 13 Oct 2024 16:00:00 GMT</pubDate></item><item><title>Learning Go (4): basic types</title><link>https://blog.oranhe.com/en/posts/go-basics-04/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/go-basics-04/</guid><description>Part 4 of my Go fundamentals notes: syntax, examples, and lessons learned.</description><pubDate>Sat, 12 Oct 2024 16:00:00 GMT</pubDate></item><item><title>Learning Go (3): variables and constants</title><link>https://blog.oranhe.com/en/posts/go-basics-03/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/go-basics-03/</guid><description>Part 3 of my Go fundamentals notes: declarations, constants, iota, and scope.</description><pubDate>Sat, 28 Sep 2024 16:00:00 GMT</pubDate></item><item><title>Learning Go (2): program structure and execution</title><link>https://blog.oranhe.com/en/posts/go-basics-02/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/go-basics-02/</guid><description>Part 2 of my Go fundamentals notes: syntax, examples, and lessons learned.</description><pubDate>Sun, 22 Sep 2024 16:00:00 GMT</pubDate></item><item><title>Learning Go (1): setting up Go on Windows</title><link>https://blog.oranhe.com/en/posts/go-basics-01/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/go-basics-01/</guid><description>Part 1 of my Go fundamentals notes: preparing a Windows development environment.</description><pubDate>Sun, 15 Sep 2024 16:00:00 GMT</pubDate></item><item><title>A step-by-step guide to creating your own “personal website”</title><link>https://blog.oranhe.com/en/posts/build-personal-site/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/build-personal-site/</guid><description>Starting from GitHub and Jekyll, a complete record of building a personal website.</description><pubDate>Sat, 14 Sep 2024 16:00:00 GMT</pubDate></item><item><title>Understanding Machine Learning Through Examples</title><link>https://blog.oranhe.com/en/posts/machine-learning-basics/</link><guid isPermaLink="true">https://blog.oranhe.com/en/posts/machine-learning-basics/</guid><description>Understand machine learning through concrete examples: loss functions, gradients, and model training.</description><pubDate>Sun, 25 Aug 2024 16:00:00 GMT</pubDate></item></channel></rss>