Tech Musings
Author

Tech Musings

Capturing thoughts and reflections while coding.

53
Articles
0
Likes
94
Views
0
Comments
Recent Articles

Latest from Tech Musings

53 recent articles
Tech Musings
Tech Musings
Apr 2, 2026 · Operations

Did You Know Nginx Now Enables HTTP/1.1 Keep‑Alive by Default?

The article reveals that recent Nginx releases have made HTTP/1.1 keep‑alive the default configuration, eliminating the need for explicit proxy_http_version and Connection header settings, and explains how this reduces handshakes, lowers latency, and improves first‑byte response times for typical web applications.

Keep-AliveOperationsPerformance
0 likes · 2 min read
Did You Know Nginx Now Enables HTTP/1.1 Keep‑Alive by Default?
Tech Musings
Tech Musings
Mar 27, 2026 · Backend Development

Why Go’s database/sql Deadlock Needed a New closingMutex and How It Works

Go’s database/sql package can deadlock when a Scan holds a read lock, a cancelled context triggers Close, and Columns attempts another read lock, but the new closingMutex introduced in Go’s source replaces the generic sync.RWMutex to allow reads during pending writes, preventing the deadlock.

GoclosingMutexdatabase/sql
0 likes · 16 min read
Why Go’s database/sql Deadlock Needed a New closingMutex and How It Works
Tech Musings
Tech Musings
Mar 26, 2026 · Backend Development

Why Netpoll Beats Go’s net Library for 60k Connections: A Deep Dive

An extensive benchmark compares Go’s standard net client with the event‑driven cloudwego/netpoll client under 60,000 concurrent connections, revealing how goroutine explosion, memory usage, and scheduler overhead differ, and demonstrates how a single scheduler plus a bounded goroutine pool dramatically reduces resource consumption.

GoGoroutinebenchmark
0 likes · 17 min read
Why Netpoll Beats Go’s net Library for 60k Connections: A Deep Dive
Tech Musings
Tech Musings
Mar 26, 2026 · Backend Development

Why netpoll Beats Go’s net Library: 99.99% Goroutine Reduction & 40% CPU Savings

A three‑hour benchmark on an 8C‑16G Linux host compares the standard Go net client with the netpoll client under 60,000 concurrent connections, revealing a 27.6% drop in client memory, a 99.99% cut in goroutine count, a 29.5% reduction in host memory, and a 40.7% lower CPU usage while maintaining the same throughput.

GoGoroutinebenchmark
0 likes · 14 min read
Why netpoll Beats Go’s net Library: 99.99% Goroutine Reduction & 40% CPU Savings
Tech Musings
Tech Musings
Mar 6, 2026 · Artificial Intelligence

How to Deploy Qwen3-8B on WSL2 with 4‑Bit Quantization and Resource Limits

This article details a step‑by‑step guide for setting up the Qwen3‑8B large language model on a Windows 11 system using WSL2, covering hardware specs, CUDA configuration, 4‑bit quantization with BitsAndBytes, SDPA attention optimization, CPU offload, and resource‑limiting tricks to achieve smooth inference performance.

4-bit quantizationCUDA optimizationPyTorch
0 likes · 10 min read
How to Deploy Qwen3-8B on WSL2 with 4‑Bit Quantization and Resource Limits
Tech Musings
Tech Musings
Mar 6, 2026 · Artificial Intelligence

How to Build a Qwen3 Chat UI with Chainlit: Hooks, Auth, and Persistence

Learn how to use the Chainlit Python framework to create a web‑based Qwen3 chat interface, covering its core features, hook mechanisms for data layers, authentication, chat start, message handling, streaming generation, performance monitoring, and session restoration, with full code examples and SQLite persistence.

AIChainlitPython
0 likes · 13 min read
How to Build a Qwen3 Chat UI with Chainlit: Hooks, Auth, and Persistence
Tech Musings
Tech Musings
Mar 5, 2026 · Cloud Native

Why Default Java GC Settings Kill Performance on Kubernetes (And How to Fix It)

Through a controlled experiment with four Spring Boot service groups on Kubernetes, this article shows that relying on Java’s default GC and heap settings can drastically reduce throughput and increase tail latency, especially under higher load, and demonstrates how explicit GC algorithm and Xms/Xmx tuning restores performance.

JVMJavaKubernetes
0 likes · 13 min read
Why Default Java GC Settings Kill Performance on Kubernetes (And How to Fix It)
Tech Musings
Tech Musings
Feb 17, 2026 · Backend Development

Why Go’s Empty Struct Takes Zero Bytes and How to Leverage It

This article explains the zero‑byte nature of Go’s empty struct, how the runtime treats zero‑size allocations, why multiple instances share the same address, and demonstrates practical patterns such as set maps, signal channels, and worker coordination that improve memory efficiency and performance.

Performancechannel signalingempty struct
0 likes · 11 min read
Why Go’s Empty Struct Takes Zero Bytes and How to Leverage It
Tech Musings
Tech Musings
Feb 12, 2026 · Databases

From MySQL to Apache Doris: Key Design Shifts for OLAP Migration

This article explains how backend engineers should rethink table design, indexing, partitioning, and key strategies when migrating attendance data from MySQL's OLTP model to Apache Doris 2.1.7's OLAP architecture, providing concrete DDL examples and practical tips.

Apache DorisOLAPPartitioning
0 likes · 12 min read
From MySQL to Apache Doris: Key Design Shifts for OLAP Migration
Tech Musings
Tech Musings
Feb 10, 2026 · Backend Development

How to Build a Hybrid Vector‑+‑Text Search with Redis 8 (No GPU Required)

This article walks through the complete setup of a hybrid retrieval pipeline on two CPU‑only Linux servers using Redis 8, Qwen‑3‑Embedding vectors, and RediSearch to combine BM25 keyword scores with cosine‑based vector similarity, showing environment details, index creation, data ingestion, the hybrid_search function implementation, result normalization, and a common pitfall of forgetting to set the query language to Chinese.

EmbeddingHybrid SearchPython
0 likes · 23 min read
How to Build a Hybrid Vector‑+‑Text Search with Redis 8 (No GPU Required)