Blog
Writing on GPUs, LLMs, MLOps, Kubernetes — and mindset · 3517 posts
#2026-03 765#english 592#culture 264#deep-dive 254#kubernetes 247#career 229#ai 216#llm 208#devops 193#2026-04 146#security 141#database 114#observability 113#communication 109#history 107#architecture 100#productivity 96#finance 88#economy 84#mindset 81#psychology 80#ai-papers 79#food 78#it 78#travel 78#deep-learning 77#japanese 77#networking 77#performance 72#business-travel 70#linux 70#gpu 69#ai-agent 66#cs-fundamentals 63#postgresql 60#rag 58#self-improvement 55#learning 53#mlops 53#ai-platform 51
Designing Structured Logging — Logs That Actually Help During an Incident
If you have ever given up while grepping logs in the middle of an incident, the log design is wrong. This post covers how to separate logs humans read from logs machines read, which fields must appear on every single lin
2026-07-26 · 12 min read #observability#logging#structured-logging#opentelemetry#incident-responseConnection refused vs. timeout — narrowing the cause at the TCP level
When a connection fails, the terminal hands back one of two messages. Connection refused means the peer returned an RST; timeout means nothing at all answered the SYN you sent. That one-line difference almost entirely de
2026-07-26 · 12 min read #network#tcp#troubleshooting#linux#kubernetesSpace Left but No space left on device — inode exhaustion, deleted open files, reserved blocks
df shows free space, yet a single file cannot be created and ENOSPC comes back. The cause is almost always one of five: inode exhaustion, files that were deleted but are still held open by a process, the reserved blocks
2026-07-26 · 17 min read #linux#filesystem#ext4#troubleshooting#storageping works but only large requests hang — dissecting MTU, MSS and the PMTUD blackhole
When small requests go through fine but only large responses stall halfway, it is almost always a path MTU problem. TCP advertises MSS based on the interface MTU, and when a narrower segment sits somewhere along the path
2026-07-26 · 14 min read #network#mtu#tcp#vpn#kubernetesCPU steal time and throttling — telling apart the st column in top, burstable credits, and CFS quota
CPU utilization reads 40%, yet p99 latency spikes and the st column in top shows 20%. Three completely different causes hide behind these look-alike symptoms: steal time, where the hypervisor does not hand a physical CPU
2026-07-26 · 17 min read #linux#cpu#cgroups#kubernetes#cloudHow to End Things Well — The Skill Nobody Taught Us
We learn how to start things countless times, but nobody ever taught us how to end them. This post looks at the structure by which the sunk cost fallacy keeps us pinned down, the one-sentence question Andy Grove asked at
2026-07-26 · 12 min read #mindset#endings#sunk-cost#decision-making#retrospectiveWhen the OOM Killer Kills a Process — From Decoding the dmesg Report to Telling cgroup OOM Apart
A process vanished without leaving a single log line and the exit code is 137. This post covers how to read the dmesg report left behind by the kernel OOM Killer one line at a time, how the badness score is computed and
2026-07-26 · 18 min read #linux#memory#oom#cgroups#kubernetesKeep One Thing You Are Bad At — The Practice of Living as an Amateur
Mention a hobby today and the talk about monetizing it follows within a minute. But the word amateur never meant someone short on skill. It came from the Latin amator, a person who does it out of love. Through the recove
2026-07-26 · 11 min read #mindset#healing#hobby#recovery#identityThe Questions Distributed Tracing Actually Answers — Spans, Sampling, and Where the Time Went
Tracing is what you need when the reports of slowness keep coming in but you have no idea which of ten services is the culprit. Starting from the structure of traces, spans, and context propagation, this post lays out wh
2026-07-26 · 15 min read #observability#distributed-tracing#opentelemetry#tail-sampling#performanceLLM API Cost Optimization — Break-Even Math for Output Tokens, Prompt Caching and Routing
Cutting an LLM API bill in half is arithmetic, not intuition. Because output tokens cost several times what input tokens cost, the biggest lever is almost always controlling output length, with prompt caching next. This
2026-07-26 · 12 min read #llm#cost-optimization#prompt-caching#rag#model-routingStabilizing LLM Structured Output — Four Layers of Defense Against Parse Failures
A layered treatment for the problem where you ask for JSON and get it wrapped in a markdown fence, followed by an explanatory sentence, or cut off at the token ceiling. Classify the failure types first, then stack the de
2026-07-26 · 12 min read #llm#structured-output#json-schema#constrained-decoding#validationdig works but the application fails — start by checking the DNS resolution order
A situation where dig answers normally but only the application cannot find the name is not a bug, it is structure. dig and nslookup bypass /etc/hosts and nsswitch.conf entirely and query the resolver directly. This post
2026-07-26 · 14 min read #network#dns#linux#kubernetes#troubleshootingThe Illusion of Time Management — Why a New Tool Never Changes the Day
If you have switched task apps five times and the day still looks the same, the problem is not the tool but the total volume of your commitments. This post covers the planning fallacy named by Kahneman and Tversky, corre
2026-07-26 · 11 min read #mindset#productivity#time-management#focus#workDiagnosing Kubernetes CrashLoopBackOff by Cause — What to Look At When the Logs Are Empty
A start-to-finish walkthrough of the situation where a Pod is stuck in CrashLoopBackOff but kubectl logs prints nothing. It starts with the precise meaning of BackOff — not a cause, but a restart delay that grows from 10
2026-07-26 · 14 min read #kubernetes#crashloopbackoff#troubleshooting#kubectl#sreHow Jazz Was Born — From Congo Square to Kind of Blue
The first legend of jazz, Buddy Bolden, left not a single recording behind, and the band that cut the first jazz record in the world in 1917 was white. New Orleans passed back and forth between France and Spain, Congo Sq
2026-07-26 · 15 min read #humanities#music#jazz#music-history#cultureWhen RAG Answers the Wrong Thing — a Debugging Procedure That Separates Retrieval Failure from Generation Failure
When RAG returns a wrong answer, most teams start by fixing the prompt, but the majority of real causes sit in the retrieval stage. This post starts with the single experiment — hand the model the gold chunk directly — t
2026-07-26 · 13 min read #llm#rag#retrieval#chunking#evaluationToo many open files solved for good — why raising ulimit does not help
Your server log fills with accept4 failed (24: Too many open files), you raise ulimit -n, and nothing changes. Behind this single symptom sit three independent limits: the per-process RLIMITNOFILE, the system-wide fs.fil
2026-07-26 · 15 min read #linux#systemd#file-descriptor#troubleshooting#containersReading Git commands through its internals — reset and rebase seen as objects, refs and the index
Memorizing Git commands means searching for them again every time, but knowing the data model lets you deduce what a command does. This post opens up the four object types (blob, tree, commit, tag), content addressing in
2026-07-26 · 12 min read #git#internals#git-objects#fundamentals#version-controlWhy Load Average Is Not CPU Utilization — load average 24 With the CPU at 30%
Covers the situation where the load average from uptime is above 24 while the CPU in top does not even reach 30%. Unlike other Unix systems, the Linux load average counts not only runnable (R) tasks but also D state (uni
2026-07-26 · 14 min read #linux#performance#load-average#psi#troubleshootingKubernetes ImagePullBackOff and ErrImagePull Fully Dissected — Ending It With One Cause String
Breaks down, cause by cause, the situation where a pod passes through ErrImagePull and then sits in ImagePullBackOff. It starts from two points: that the two states are different stages of the same event, and that the an
2026-07-26 · 12 min read #kubernetes#imagepullbackoff#container-registry#troubleshooting#containerd