Logo Ricky
  • Home
  • About
  • More
    Skills Experiences Education Projects
  • Posts
  • Notes
  • Activities
  • Transform
  • English
    English Chinese
  • Dark Theme
    Light Theme Dark Theme System Theme
Logo Inverted Logo
  • Tags
  • A10
  • ACME
  • AD
  • AES
  • AI
  • Aliyun
  • Ansible
  • APP
  • Application Delivery Controller
  • Arceus
  • Argo CD
  • ASCII
  • Authentication
  • Authorization
  • AWS
  • BASH
  • Bayonet
  • Benchmark
  • BGP
  • BIRD
  • Board Game
  • Browser
  • Byte
  • Cache
  • CDN
  • Channel
  • Chart
  • Checklist
  • Chrome
  • Chrome OS
  • Chrony
  • CI
  • Cilium
  • Cisco
  • Cloud-Native
  • Cloudflare
  • Cluster
  • Command Line
  • Completion
  • Config
  • Container
  • Context
  • CPU
  • CURL
  • Data
  • Database
  • Debug
  • Dehydrated
  • Design
  • DevSecOps
  • Diagrams
  • Dmg
  • DNS
  • DNS-01
  • Docker
  • EFF
  • ElasticSearch
  • ELK
  • Emoji
  • EMQX
  • Encode
  • Encrypt
  • ESXi
  • Extension
  • Firewall
  • Fortigate
  • Fortinet
  • FortiOS
  • Game
  • GeoIP
  • GIN
  • Git
  • GitBook
  • Github
  • Gitlab
  • GitOps
  • Gluetun
  • Go
  • Go-Mysql-Elasticsearch
  • Golang
  • Google
  • GPG
  • GraphQL
  • HA
  • HAProxy
  • Hash
  • HomeLab
  • Htop
  • HTTP
  • Infra
  • Infrastructure
  • Input Method
  • Interview
  • Introduction
  • IPhone
  • Iptables
  • Iso
  • Issue
  • ITerm2
  • Jenkins
  • Jsoniter
  • Juniper
  • JWT
  • Kafka
  • Kibana
  • Kubernetes
  • LDAP
  • Leetcode
  • Lightweight
  • Linkerd
  • Links
  • Linux
  • Llamafile
  • LLM
  • Log
  • Lua
  • Lullaby
  • LVM
  • Machinelearning
  • MacOS
  • Markdown
  • Mattermost
  • Mermaid
  • MinIO
  • Module
  • MQTT
  • MSS
  • MTU
  • Music
  • MyDumper
  • MySQL
  • NAS
  • Netcat
  • Network
  • Nftables
  • Nginx
  • OAuth
  • OIDC
  • Ollama
  • OpenResty
  • Parquet
  • Percona
  • Pinyin
  • Pip
  • Plugin
  • Pokemon
  • Postgres
  • PostgreSQL
  • PowerDNS
  • PowerShell
  • Pprof
  • Principle
  • Prometheus
  • Protobuf
  • Proxy
  • Push
  • Python
  • QRCode
  • R
  • RAID
  • RDP
  • Redis
  • Regex
  • Ringtone
  • Route
  • Rust
  • S3
  • ScreenShot
  • Security
  • Selenium
  • Sentry
  • Service Mesh
  • SFTP
  • SHELL
  • Slides
  • Snow
  • Software
  • SonarQube
  • SQL
  • SSH
  • SSL
  • String
  • Switch
  • Sync
  • Synology
  • System
  • Tcpdump
  • Telegram
  • Terminal
  • Terraform
  • Test
  • Testing
  • Time
  • Timeout
  • TLS
  • Tools
  • Tor
  • Trace
  • Traefik
  • Travel
  • Tunnel
  • Typora
  • Ubuntu
  • UNIX
  • URL
  • UserAgent
  • V2Ray
  • Vagrant
  • Video
  • Vim
  • Virtualization
  • Visualization
  • VNC
  • VPN
  • VSCode
  • WAF
  • WASM
  • Web
  • WebAssembly
  • Webp
  • Windows
  • WSL
  • YAML
  • Youtube
  • Zabbix
  • Zero Trust
  • Zim
  • ZSH
  • 台語
Hero Image
Tools

tirith: Tirith guards the gate and intercepts suspicious URLs, ANSI injection, and pipe-to-shell attacks before they execute. subtrace: Inspect HTTP requests in any server with just a single command. prek: ⚡ Better pre-commit, re-engineered in Rust sandbox-exec: macOS’s Little-Known Command-Line Sandboxing Tool babyshark: Flows-first PCAP TUI (case files, gorgeous UX). llmfit: A terminal tool that right-sizes LLM models to your system’s RAM, CPU, and GPU. Detects your hardware, scores each model across quality, speed, fit, and context dimensions, and tells you which ones will actually run well on your machine. sandbox-exec(Deprecated) sandbox-exec -f profile.sb command_to_run

Sunday, March 15, 2026 Read
Hero Image
Links

AnyStorage: AnyStorage brings S3, R2, Backblaze B2, MinIO, and other compatible services into a single desktop workspace with a cleaner rhythm than cloud dashboards. 歹晚郎內推互助網絡 Grid: Free, Privacy-First Digital Fabrication Tools for STEM Learning Free British Accent Generator minimal: Minimal CVE Hardened container image collection Docker Hardened Images: secure, minimal, production-ready images. webr: The statistical language R compiled to WebAssembly via Emscripten, for use in web browsers and Node. Can I Run AI locally?: Find out which AI models your machine can actually run. Can’t Maintain: A “Can’t Unsee”-style training game that teaches junior React/TypeScript developers proper prop naming conventions and JSDoc documentation. Go Katas: A collection of daily coding challenges designed to help you master idiomatic Go through deliberate, repetitive practice. Paged Out!: a free experimental (one article == one page) technical magazine about programming (especially programming tricks!), hacking, security hacking, retro computers, modern computers, electronics, demoscene, and other similar topics. Free Weather API: Open-Meteo is an open-source weather API and offers free access for non-commercial use. No API key required.

Saturday, March 14, 2026 Read
Hero Image
Articles

You don’t need Kafka: Building a message queue with only two UNIX signals It’s 2026, Just Use Postgres What canceled my Go context? Notes on Writing Wasm Go 1.26 interactive tour It’s 2026, Just Use Postgres The “Use the Right Tool” Trap You’ve heard the advice: “Use the right tool for the right job.” Sounds wise. So you end up with: Elasticsearch for search Pinecone for vectors Redis for caching MongoDB for documents Kafka for queues InfluxDB for time-series PostgreSQL for… the stuff that’s left Here’s what most people don’t realize: Postgres extensions use the same or better algorithms as specialized databases (in many cases).

Friday, March 13, 2026 Read
Hero Image
Selectively Disabling HTTP/1.0 and HTTP/1.1

Selectively Disabling HTTP/1.0 and HTTP/1.1 http { ... # Check for text-based browsers map $http_user_agent $is_text_browser { default 0; # Text-Based Browsers (not exhaustive) "~*^w3m" 1; "~*^Links" 1; "~*^ELinks" 1; "~*^lynx" 1; # Bots (not exhaustive) "~*Googlebot" 1; "~*bingbot" 1; "~*Yahoo! Slurp" 1; "~*DuckDuckBot" 1; "~*YandexBot" 1; "~*Kagibot" 1; } # Check if request is HTTP/1.X map $server_protocol $is_http1 { default 0; "HTTP/1.0" 1; "HTTP/1.1" 1; } # If Request is not text-based browser, # and is HTTP/1.X, set the http1_and_unknown variable # to 1, which is equivalent to "true" map "$is_http1:$is_text_browser" $http1_and_unknown { default 0; "1:0" 1; } ... }

Tuesday, February 3, 2026 Read
Hero Image
Go Tool Trace

淺談 Go Tool Trace - 1 淺談 Go Tool Trace - 2 Go Trace 與使用者自訂追蹤分析 淺談 Go Tool Trace - 3 實際分析 Goroutine Analysis Go Tool Trace - 4 從 分析到實戰:最佳化 Goroutine 數量 trace Trace is an “event timeline”, not “sampling statistics” go tool trace: used to inspect runtime traces. Its essence is a time-ordered event stream, including: goroutine lifecycle/states: create / runnable / running / waiting / syscall scheduler (G/M/P) related events, scheduling latency blocking time distribution (net / sync / syscall) GC events, STW, heap changes (visible in the trace viewer) Use pprof to find hot spots: who burns CPU, who allocates a lot Use trace to find latency causes: why it’s stuck (scheduling? locks? network? syscalls? GC?) Quick intuition:

Tuesday, January 27, 2026 Read
Hero Image
I Replaced Redis with PostgreSQL (And It's Faster)

I Replaced Redis with PostgreSQL (And It’s Faster) Before the change, Redis handled three things: Caching (70% of usage) Pub/Sub (20% of usage) Background Job Queue (10% of usage) The pain points: Two databases to backup Redis uses RAM (expensive at scale) Redis persistence is… complicated Network hop between Postgres and Redis PostgreSQL Feature 1: Caching with UNLOGGED Tables Redis await redis.set("session:abc123", JSON.stringify(sessionData), "EX", 3600); PostgreSQL CREATE UNLOGGED TABLE cache ( key TEXT PRIMARY KEY, value JSONB NOT NULL, expires_at TIMESTAMPTZ NOT NULL ); CREATE INDEX idx_cache_expires ON cache(expires_at); Insert

Monday, January 19, 2026 Read
Hero Image
Taiwanese Minnan Input Method App Launched: Mobile Devices Can Now Type Taiwanese

Taiwanese Minnan Input Method App Launched: Mobile Devices Can Now Type Taiwanese MOE Taiwanese Minnan Input Method - iOS MOE Taiwanese Minnan Input Method - Android The “Taiwanese Minnan Input Method” supports both phonetic input and voice input, allowing users to convert speech into text.

Thursday, January 15, 2026 Read
Hero Image
Replace Watchtower with WUD: Build a Controlled Docker Auto-Update Plan

Replace Watchtower with WUD: Build a Controlled Docker Auto-Update Plan WUD (What’s Up Docker) services: wud: image: getwud/wud:latest container_name: wud restart: unless-stopped ports: - "3000:3000" volumes: - /var/run/docker.sock:/var/run/docker.sock - ./store:/store environment: - TZ=Asia/Shanghai # Local Docker watcher - WUD_WATCHER_LOCAL_SOCKET=/var/run/docker.sock # Key: do not watch any containers by default - WUD_WATCHER_LOCAL_WATCHBYDEFAULT=false # Scan every 12 hours - WUD_WATCHER_LOCAL_CRON=0 */12 * * * # Auto update + prune old images after update - WUD_TRIGGER_DOCKER_AUTO_PRUNE=true # Equivalent to `watchtower --cleanup` Monitor only (no auto update) labels: - "wud.watch=true" Appears in the WUD UI Shows update hints Does not auto-restart Monitor + auto update (Watchtower equivalent) labels: - "wud.watch=true" - "wud.trigger.include=docker.auto"

Sunday, January 11, 2026 Read
Hero Image
What Happened To WebAssembly

What Happened To WebAssembly Watlings

Sunday, January 11, 2026 Read
Hero Image
How Terminals Work

How Terminals Work

Friday, January 9, 2026 Read
Hero Image
Python Numbers Every Programmer Should Know

Python Numbers Every Programmer Should Know

Sunday, January 4, 2026 Read
Hero Image
Why is this running?

Why is this running?

Tuesday, December 30, 2025 Read
  • ««
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
  • »»
Navigation
  • About
  • Skills
  • Experiences
  • Education
  • Projects
Contact me:
  • zeyanlin@outlook.com
  • linzeyan
  • Ricky
  • Ricky