Designing devbox-doctor, a safer Mac toolchain audit

Designing devbox-doctor: A Safer Mac Toolchain Audit

I am building a developer-machine checkup skill called devbox-doctor. The idea sounds simple: inventory a Mac, identify tools that may no longer earn their keep, find actual toolchain conflicts, and trace data left behind by uninstalled apps. The dangerous word in that sentence is identify. A scanner can prove that two tools are installed. It cannot prove that one is useless. A directory can resemble an app’s name. That does not make the directory safe to delete. Spotlight can return no last-used date. That does not mean the app was never opened. ...

July 18, 2026 · 12 min · 2431 words · Xinwei Xiong, Me
Five quality gates surrounding an AI workflow, from evidence to human review

AI Workflow Quality Gates: A Practical Engineering Guide

“It Runs” Is Not a Reliability Standard Most personal AI workflows begin with one acceptance test: did it produce something? A draft appears, a patch compiles, ten pages become one, and the task feels finished. After enough repetitions, however, the costly failures are rarely dramatic. They arrive quietly: a polished paragraph built on a stale source, a tool call that never completed, a plausible plan that solved the wrong problem. ...

July 11, 2026 · 8 min · 1567 words · Xinwei Xiong, Me
Argo CD continuously comparing desired state in Git with live Kubernetes state

Argo CD in Production: GitOps Sync, ApplicationSets, Rollbacks, and Security

A green sync does not prove the delivery system is safe When Argo CD turns an application green, it proves one narrow thing: at that moment, the cluster matches the desired manifests Argo CD calculated. It does not prove that the image passed its tests, that a deletion is safe, or that the next Git change belongs in production. That boundary is the right place to begin. Argo CD is not a pipeline that makes release judgments for a team. It is a Kubernetes controller that repeatedly compares, reports, and—when policy permits—reconciles state. Its value is not another attractive dashboard. Its value is turning deployment intent from scattered commands into something reviewable and reproducible. ...

May 9, 2025 · 13 min · 2705 words · Xinwei Xiong, Me
Several model pipelines converge at an AI Gateway where cost and governance are weighed

AI Gateway Guide: LiteLLM, Kong, APISIX, Cloudflare, or Portkey?

An AI Gateway is not merely a reverse proxy placed in front of a language model. Once an application reaches production, every model call carries several kinds of uncertainty at once: long-lived streaming connections, token-based billing, provider quotas, sensitive inputs, changing model behavior, and outputs that cannot be trusted by default. A conventional API gateway can handle part of this traffic. It may authenticate clients, terminate TLS, enforce request limits, and route HTTP requests. It does not automatically answer the questions that matter most to an AI product: ...

April 16, 2025 · 16 min · 3223 words · Xinwei Xiong, Me

GitOps & Kubernetes Deployment Strategies

Today we will take a look at the theory and practice of kubernetes and gitops Command introduction First, let’s take a look at the subnaming supported by kubectl for our convenience: kubectl apply - applies the definition of one or more resources. Typically used to deploy applications or update resources. kubectl get - displays information about one or more resources. This is a common command to view the status of resources in a Kubernetes cluster. kubectl describe - Displays details of one or more resources, such as events, status, and configuration. kubectl delete - Delete resources in the Kubernetes cluster. kubectl exec - Execute commands in containers in the cluster. kubectl logs - Print container logs. kubectl create - Create one or more resources from a file or standard input. kubectl edit - Edit resources in the cluster. This will open an editor to modify the resource’s configuration. kubectl port-forward - Forward local ports to Pods in the cluster. kubectl run - Run a specified image in the cluster. kubectl scale - Adjust the number of replicas of resources (such as Deployment, ReplicaSet). kubectl rollout - Manage the deployment of resources, such as viewing status, pausing, resuming or rolling back updates. **In addition to the above commands, kubectl in Kubernetes also supports annotations: ** ...

November 25, 2023 · 42 min · 8903 words · Xinwei Xiong, Me

Learn About Automated Testing

Automated testing practices and strategies for GitHub open source Go projects in the cloud native field introduce As OpenIM, a popular project on Github, how to create value in the cloud native era is very important. OpenIM is a small and high-quality team, and we do not have particularly in-depth insights in automation. Continuous Integration and Continuous Delivery (CI/CD) using GitHub Actions: GitHub Actions provides a platform to automatically build and test Go language projects. By configuring GitHub Actions workflows, you can automatically run tests when your code changes, ensuring the quality and functionality of your code (https://docs.github.com/en/actions/automating-builds-and-tests) . KubeVela project practice: KubeVela is a cloud-native and open-source project in Go that shows how to organize CI/CD processes, including automated testing, in a cloud-native environment. KubeVela uses declarative workflows to coordinate the CI/CD process. You can refer to KubeVela’s GitHub repository to understand and apply these [Practice 3](https://www.alibabacloud.com/blog/kubevela-one-of-the- hottest-golang-cloud-native-and-open-source-project_597465)4 [5](https://github.com/kubevela/workflow# :~ :text=KubeVela Workflow is an open,engine in your own repository). Cloud native testing framework and tools: In cloud native development, Contract Testing is a common testing practice, which ensures that communication between services complies with predefined API protocols. For example, Pact is used in Cloud-Native Toolkit for contract testing. By writing and integrating tests, you can verify that communication between services works as expected 6 . Code Coverage Check: When doing automated testing, it is a good practice to check code coverage. Many testing frameworks have built-in code coverage checking capabilities, and they can be configured to report code coverage of tests. For example, use the SonarQube tool to read and report code coverage information 6 . Utilize open source tools and frameworks: You can use open source tools and frameworks for testing, such as using Cypress to test cloud native applications[7](https://dev.to/litmus-chaos/cloud-native-application-testing-automation-2bh5# : ~:text=Cloud Native Application %26 Testing,Testing Using Cypress for). There are other projects and resources, such as the learning-cloud-native-go/myapp repository on GitHub, which provide completed examples of cloud native Go projects. You can refer to these examples to understand and apply cloud native testing practices[8] (https://medium.com/learning-cloud-native-go/lets-get-it-started-dc4634ef03b#:~:text=The completed project can be,The completed API). Customized automated testing process: By combining GitHub Actions and open source tools, you can customize your project’s CI/CD process, including automated testing and verification steps9 . Quantify the value of automated testing Automation obviously means that the manual cost in the later period is very low. That is to say, as time goes by and the number of automation runs increases, the value of automation and ROI becomes higher. ...

October 14, 2023 · 61 min · 12887 words · Xinwei Xiong, Me

Github Actions Advanced Techniques

Create actions **actions are individual tasks that can be combined to create jobs and custom workflows. You can create your own actions, or use and customize actions shared by the GitHub community. ** Actions can be created by writing custom code that interacts with your repository in any way you like, including integrating with GitHub’s API and any publicly available third-party API. You can write your own actions for use in workflows, or share the actions you build with the GitHub community. To share your built actions with everyone, your repository must be public. ...

September 16, 2023 · 47 min · 9905 words · Xinwei Xiong, Me

GoReleaser v2 + GitHub Actions: Go Release Guide

The goal of GoReleaser is to automate much of the tedious work when releasing software, by using sensible defaults and making it simple for the most common use cases. Preparation: .goreleaser.yaml file: contains all configuration information. (For more information, see Customization ) Clean working tree: Make sure the code is up to date and all changes have been committed. SemVer compliant version number (e.g. 10.21.34-prerelease+buildmeta) GoReleaser running steps: The operation of GoReleaser is mainly divided into the following four steps: ...

September 16, 2023 · 53 min · 11224 words · Xinwei Xiong, Me