Replacing VMs with ESP32 for Network Probing — esp32-blackbox Project in Action

7 min read
Why I have several LANs in different locations around the city, roughly 10 km apart. To make these networks talk to each other, I used tools like NetBird, ZeroTier, and Cloudflare Tunnel to set up a cross-region virtual LAN. The network was set up, but how to ensure stability? After all, these tunnels traverse the public internet with varying link quality. The most direct approach is to use Prometheus’s blackbox_exporter for probing — periodic HTTP requests, Pings, DNS queries — feeding results into a time-series database with alert rules, so problems are detected immediately.
ESP32 Network Probing Prometheus NetBird
Continue reading →

Switched My Blog Theme: From Hugo NexT to Self-Written Zhi

8 min read
Why Switch This blog previously used Hugo NexT, forked for custom modifications. NexT itself is a feature-rich theme, but when it comes to “customizing things yourself,” the experience wasn’t great. The issues boiled down to a few things: SCSS nesting hell. 101 SCSS files, three levels of directory nesting. _common/components/post, _common/components/third-party, _common/outline/sidebar… To change a style, you first had to figure out which file it was in, where variables were defined, and which scheme was overriding it. Not that it couldn’t be done, but each change meant half an hour of hunting.
Hugo Theme Development Zhi AI Programming
Continue reading →

Zhipu Coding Plan × Oh My OpenCode: Multi-Model Orchestration Setup Guide

6 min read
Why Bother When it comes to writing code with AI, the gap between single-model and multi-model approaches keeps widening. No matter how strong a single model is, it can’t compete with a team of specialized models working in parallel. Oh My OpenCode (OmO for short) is a multi-model orchestration plugin in the OpenCode ecosystem, with 11 Agents each having distinct responsibilities and 48 Hooks spanning the entire lifecycle. Zhipu’s Coding Plan provides access to the full GLM model series. Combining the two allows you to assign different models by role — strong coders for coding, strong reasoners for reasoning, free models for busywork.
AI Programming Multi-Model Orchestration
Continue reading →

Windows Defender Exclusion Bulk Cleanup Guide

3 min read
When the Windows Defender exclusion list accumulates a large number of useless entries, you can clean them all at once with a PowerShell one-liner. This article details the entire process, including backup, cleanup, and verification. Prerequisites Modifying Defender configuration requires administrator privileges. Open a terminal with sufficient permissions as follows: Click the Windows Start menu and search for PowerShell Right-click Windows PowerShell in the search results, then select Run as administrator Click Yes in the User Account Control (UAC) window to confirm authorization Step 1: Backup Existing Exclusions (Highly Recommended) Before cleaning, it is recommended to back up the current exclusion list to prevent accidentally deleting entries you want to keep. If needed later, you can restore from the backup file.
Windows PowerShell Windows Defender Security
Continue reading →

Domestic LLM Resource and Cost Comparison: GLM-5 / Kimi K2.5 / MiniMax M2.7

3 min read
Overview This article compares the resource requirements and usage costs of three major domestic LLMs, helping developers choose the right solution for their scenarios. Model Vendor Architecture Minimum Deployable VRAM API Available GLM-5 Zhipu AI Dense (multiple versions) 24GB (8B) ✅ Kimi K2.5 Moonshot AI MoE (undisclosed) 24GB (lightweight) ✅ MiniMax M2.7 MiniMax MoE 230B Not yet open-sourced ✅ GLM-5 (Zhipu AI) Versions & Hardware Requirements GLM-5 offers 4 parameter versions, making it the widest-coverage domestic LLM currently available.
GLM Kimi MiniMax LLMs
Continue reading →

Temperature and Humidity Monitoring with ESP01 Board

6 min read
Introduction In IoT applications, temperature and humidity monitoring is a common and important requirement. The ESP01, as a low-cost, low-power WiFi module, provides a convenient solution for implementing temperature and humidity monitoring. This article details how to use the ESP01 board for temperature and humidity monitoring development, including hardware connections, code implementation, and functional analysis. Hardware Preparation ESP01 Board: Core control module, responsible for data collection and network communication. DHT Temperature and Humidity Sensor: Used to measure ambient temperature and humidity. Dupont Wires: Used to connect the ESP01 and DHT sensor. Connect the DHT sensor’s VCC pin to the ESP01’s 3.3V pin, the GND pin to GND, and the data pin to the designated pin on the ESP01 (defined as DHTPIN in the code).
ESP01 DHT11 Arduino Temperature Humidity
Continue reading →

eBPF Series: DeepFlow Extended Protocol Parsing Practice (MongoDB Protocol & Kafka Protocol)

10 min read
Overview: How to Analyze a Protocol (MongoDB) Protocol Document Analysis Approach MongoDB Protocol OpCode Reference Table Analyzing the Most Common OpCode OP_MSG Extending Protocol Parsing in DeepFlow Agent DeepFlow Agent Development Document Overview Code Guide Define a Protocol with a Constant Identifier Prepare Parsing Logic for the New Protocol Define the Struct Implement L7ProtocolParserInterface Extending DeepFlow Protocol Collection Using Wasm Plugins Kafka Protocol Analysis Kafka Header and Data Overview Kafka Fetch API Kafka Produce API Kafka Protocol DeepFlow Agent Native Decoding DeepFlow Agent Wasm Plugin Wasm Go SDK Framework Plugin Code Guide Conclusion Native Rust Extension Wasm Plugin Extension Appendix Overview MongoDB is widely used today, but lacks effective observability capabilities. DeepFlow is an excellent solution for observability, but it lacks support for the MongoDB protocol. This article extends DeepFlow with MongoDB protocol parsing, enhancing observability in the MongoDB ecosystem. It briefly describes the process from protocol document analysis to implementing code parsing within DeepFlow.
DeepFlow EBPF Protocol Parsing MongoDB Kafka
Continue reading →

Applying VictoriaMetrics Stream Aggregation for Metrics

4 min read
Community VM Stream Aggregation Capability Analysis and Issues VictoriaMetrics Open-Source Project Native Capabilities Stream aggregation in the VictoriaMetrics project was integrated into vmagent starting from version 1.86. For details, refer to: https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3460 From the source code analysis, the stream aggregation capability looks like this: The core computation code is described in the pushSample function: go 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 func (as *totalAggrState) pushSample(inputKey, outputKey string, value float64) { currentTime := fasttime.UnixTimestamp() deleteDeadline := currentTime + as.intervalSecs + (as.intervalSecs >> 1) again: v, ok := as.m.Load(outputKey) if !ok { v = &totalStateValue{ lastValues: make(map[string]*lastValueState), } vNew, loaded := as.m.LoadOrStore(outputKey, v) if loaded { v = vNew } } sv := v.(*totalStateValue) sv.mu.Lock() deleted := sv.deleted if !deleted { lv, ok := sv.lastValues[inputKey] if !ok { lv = &lastValueState{} sv.lastValues[inputKey] = lv } d := value if ok && lv.value <= value { d = value - lv.value } if ok || currentTime > as.ignoreInputDeadline { sv.total += d } lv.value = value lv.deleteDeadline = deleteDeadline sv.deleteDeadline = deleteDeadline } sv.mu.Unlock() if deleted { goto again } } General Application Analysis of Stream Aggregation First, let’s look at the time series chart after stream aggregation:
VictoriaMetrics Prometheus Metric Aggregation Vmagent
Continue reading →

eBPF Series: A Brief Analysis of Pixie

1 min read
Deployment process and instructions reference: pixie install Pixie Platform Main Components Pixie Edge Module (PEM): Pixie’s agent, installed per node. PEMs use eBPF to collect data, which is stored locally on the node. Vizier: Pixie’s collector, installed per cluster. Responsible for query execution and managing PEMs. Pixie Cloud: Used for user management, authentication, and data proxying. Can be hosted or self-hosted. Pixie CLI: Used to deploy Pixie. Can also be used to run queries and manage resources like API keys.
Pixie EBPF Kubernetes
Continue reading →

A Casual Talk About CPU Timing and Modern Operating Systems

17 min read
Time-Sharing Systems and Linux First, let’s review time-sharing systems. The time-sharing system is a very important operating system concept that maximizes computer utilization and is a crucial means of implementing multi-program concurrency. The Linux kernel we use daily also adopts the time-sharing system philosophy, mainly reflected in the following aspects: Time Slice: Linux uses a time slice mechanism to divide CPU time. Each process can only execute for one time slice before yielding the CPU to other processes. This achieves CPU time sharing and fair allocation.
CPU Linux Operating System
Continue reading →