Skip to content
Joey Wang
Menu

Search

DevOps and Reliability

Systems that stay up, deploy safely, and can be explained when they fail.

The problem

Delivery has become slow or risky. Deployments need a hero, incidents repeat, and the database is the part nobody wants to touch.

What I offer

  • Kubernetes, PostgreSQL, and cloud infrastructure that is documented, tested, and reversible
  • CI pipelines that fail for real reasons and pass deterministically
  • Observability, backups, and recovery paths that have actually been exercised
  • Security hardening grounded in audits, not checklists

Start here

  1. Zombie PostgreSQL replicas: the WAL segment removed deadlock · PostgreSQL replicas on Kubernetes can get stuck in a WAL segment removed loop that passes liveness checks, and three fixes stop it for good.
  2. I Audited the OpenVPN Server I Wrote a Guide For · Two years after publishing a guide to restricting OpenVPN clients to specific IPs, I audited the server it built, and most of the findings trace back to the guide.
  3. Kaniko: building container images without a Docker daemon · Kaniko builds and pushes container images without a Docker daemon, and the setup for it differs across GitHub Actions, Google Cloud Build, and CircleCI.

All writing in this area (97)

When an Always Free server gets smaller

What Oracle's smaller Ampere A1 Always Free limits mean for a self-hosted ARM server, and how I redesigned mine around a 12 GB, 2-core budget.

Tightening Hermes Secrets with Bitwarden

A practical walkthrough for moving Hermes API keys out of local env files and into Bitwarden Secrets Manager, with verification and cleanup steps.

Securing Hermes Agent with OpenShell

Why I run Hermes Agent inside OpenShell when it reads untrusted content, and how filesystem, network, process, and credential policy change the security model.

Optimizing a 1C1G Ubuntu Cloud Server

A production-tested checklist for making a 1 vCPU, 1GB RAM Ubuntu server stable: swap, kernel tuning, service removal, and MySQL/PHP-FPM limits.

Optimizing Android Builds in GitHub Actions

Android builds in GitHub Actions run 10-30 minutes unoptimized; layered Gradle and Yarn caching plus scoped environment secrets get that down to a few minutes.

PostgreSQL 18: What's New and How to Upgrade

PostgreSQL 18 adds better query parallelism, parallel logical replication apply, and more flexible partitioning, plus the pg_upgrade and dump/restore paths to get there.

How to Debug Docker Image Builds

Practical techniques for debugging Docker image builds: BuildKit output flags, inspecting intermediate layers, nsenter tricks, and multi-stage build targets.

How to Rotate GKE Cluster Credentials

The gcloud commands for checking certificate expiry, starting rotation, upgrading nodes to the new certificate, and completing GKE credential rotation.

Pgpool-II: Middleware for PostgreSQL

Pgpool-II sits between PostgreSQL and its clients as a connection pooler and load balancer, and this covers the Kubernetes setup that keeps writes consistent.

Defending Against DoS Attacks

How to defend against DoS and DDoS attacks with request throttling, input validation, firewall rules, load balancers, and cloud-based mitigation.

count file size from json

A bash one-liner that uses jq to pull resource IDs out of lesson JSON files, then du to total their file sizes on disk.

NETSCREEN 5GT密码破解方法

恢复 NetScreen 5GT 密码的两种方法:通过 Console 输入序列号初始化,或用重置针孔硬复位,以及导入旧配置文件前的编辑注意事项。

Work with me