A short piece about reading the hidden intent behind the simple question "Why does a CPU throttle?"
April 15, 2026Posts
- How would you answer "Why does a CPU throttle?"
- Istio Part 2: Ambient Mode Under the Hood via Envoy Configs
A deep dive into how Istio Ambient mode's HBONE tunneling and traffic redirection are implemented in Envoy configs.
April 14, 2026 - Istio Part 1: Why Istio Ambient Mode?
Introduction to why Channel.io's DevOps team chose Istio Ambient mode and how it works.
March 20, 2026 - Investigating Istio AuthorizationPolicy ext_authz in Envoy Config
Analyzing how Istio AuthorizationPolicy's action: CUSTOM works in Envoy config based on actual envoy config dump.
March 10, 2026 - A common Python async trap: one sync function that blocked the Liveness Probe
How calling a CPU-bound sync function inside an async endpoint blocked /v1/health
February 17, 2026 - RegularExpression Path Matching in HTTPRoute
Deep dive into Istio's HTTPRoute path matching priority and why PathPrefix always wins over RegularExpression
July 15, 2025 - Identifying Client IP in Istio (Proxy Protocol v2)
How to obtain the real client IP in an AWS NLB + Istio Gateway environment where even numTrustedProxies doesn't help, solved with Proxy Protocol v2.
April 2, 2025 - How Channel.io Adopted GitHub Actions Part 2: Operating ARC in Production and Troubleshooting
Case studies and lessons learned from operating and troubleshooting the Kubernetes Actions Runner Controller (ARC) at Channel.io.
March 19, 2025 - How Channel.io Adopted GitHub Actions Part 1: Building ARC and Supporting Container Jobs
A story about how Channel.io moved from CircleCI to GitHub Actions with self-hosted runners.
March 18, 2025 - Three months flew away; 2024 Q3 Retrospective
3 months passed by in the blink of an eye. Repeating my daily routine of work and development at home, there were no major events, but when I look back, it was quite a busy 90 days after all.
September 30, 2024 - Considerations About Scaling Out Redis Streams with Producers and Consumers While Designing Uptimeninja.io
I am conceptualizing an event-driven architecture using Redis Streams for the Uptimeninja.io service. Along the way, I've encountered several challenges related to scaling out producers and consumers.
July 28, 2024 - First 3 Months as a DevOps Engineer; 2024 Q2 Retrospective
I can confidently say that over the past 3 months, I've been sitting in front of a computer except for eating and sleeping. But I enjoyed every moment of it. I was obsessed with development 1) while at work, and 2) even on weekends.
June 30, 2024 - Ubuntu; How to install on-premise Kubernetes using kubeadm
Complete guide to install vanilla Kubernetes on Ubuntu machines using kubeadm. Also providing ways to operate Nvidia GPU nodes on kubernetes.
May 11, 2024 - Creating Lightweight Java Container with Custom JRE
Learn to drastically cut Java Docker image sizes using jdeps and jlink for creating custom Java Runtime Environment
April 8, 2024 - Complete Guide to install Arch Linux on bare metal from scratch
This article goes through the complete process of installing Arch Linux, including disk partitioning, encryption, configuring LVM and grub. Furthermore, setting up essential packages and services.
March 16, 2024 - Arch Linux; How to install on-premise Kubernetes using kubeadm
Complete guide to install vanilla Kubernetes on Arch Linux machines using kubeadm.
March 14, 2024 - [K3s-06] How to create an actually safe secrets for GitOps
Kubernetes secrets are not actually safe to store on git. it is just base64 encoded. sealed secrets are encrypted with a key pair.
December 21, 2023 - [K3s-05] How to automate issuing TLS certificate in K3s ingress
How to attach TLS certificate to K3s ingress using let's encrypt and dns-01 challlenges. Also, how to attach TLS certificate using Cloudflare Origin CA with proxied to Cloudflare Network
December 19, 2023 - [K3s-04] K3s Service LoadBalancer Configuration (Klipper and MetalLB)
How to expose K3s container service to outside using LoadBalancer. There are two options, using K3s default LoadBalancer Klipper or MetalLB which is well known for on-premise LoadBalancer.
December 14, 2023 - [K3s-03] How to Inject Docker Credentials to K3s
How to download docker credentials from AWS ECR and inject to K3s cluster.
December 9, 2023 - [K3s-02] How to Access K3s cluster with kubectl from outside
How to Access K3s cluster with kubectl from outside. To issue kubeconfig credential to access K3s API server.
December 7, 2023 - [K3s-01] How to install K3s and setup Terraform
How to initially setup K3s cluster and setup Terraform for K3s nodes.
December 6, 2023 - SPARCS X WING Session 2023
SPARCS(Programmer's association from KAIST) X WING (students' developer club associated to GIST), have held an event to share each member's developer experience
September 16, 2023
- GIST DEV NIGHT 2023
Speaker at GIST Developer's Night 2023, giving lecture about polyglot developer and why should you become one.
September 13, 2023
- Introducing Bitcoin nodes' boostrap process and its protocol
Introducing basic steps of two different bitcoin nodes communicate at first step with some bitcoin protocol.
August 10, 2023 - Sudadu
We developed a Flutter app that recommends similar types of problems from the KSAT workbook. Deployed ML using BentoML and AWS Lambda.
June 13, 2023
- 1st GIST X GDSC Hackathon; GIST Attendance
To solve problems on GIST campus, we created a lecture attendance app. We added GPS, Wifi network address verification, and request payload obfuscation to it.
May 27, 2023
- Custom Wrapper Function in Golang with Context
How to create custom wrapper function to inject Database object and user id from JWT and use it in each API handler.
April 20, 2023 - Building Container from scratch without Docker
Building Container from scratch without Docker
March 24, 2023
- Concurrent Database Connection and Query execution in Rust
Considering creating initial pool time and concurrent execution of database while building API server using Rust.
March 5, 2023 - Datguri
Communicate easily with other people in same website using Chrome extension.
March 5, 2023
- Python GIL (Global Interpreter Lock)
Poor performance of python compare to other programming language is always being an issue, and this cannot be independent of GIL.
January 14, 2023 - What is NAT instance?
Creating NAT instance using Terraform to access internet from private subnet.
September 28, 2022 - What is Bastion Host?
Divide public and private subnet using terraform and create bastion host to access private subnet.
September 27, 2022 - Simple Web Server using Rust
Build simple multi-thread web server using Rust's built-in TcpListener module.
September 14, 2022 - Simple Web Server with C programming
Building simple web server with socket programming using C.
September 13, 2022 - Socket Programming
Basic concepts in OSI 7 layers and detailed interfaces and functions in socket programming.
September 12, 2022 - Generative Adversarial Network (GAN)↗
Introduction to Generative Adversarial Networks with MNIST generation example. Written in Korean.
October 14, 2021 - Sequence-to-Sequence: Seq2Seq↗
Introduction to Seq2Seq models, covering attention decoder, English-French and Korean-English translators. Written in Korean.
August 5, 2021 - Recurrent Neural Network (RNN)↗
Fundamentals of Recurrent Neural Networks, including creating simple RNNs and sentimental classification. Written in Korean.
July 8, 2021 - Autoencoder↗
Introduction to autoencoders with Fashion MNIST example. Written in Korean.
July 2, 2021 - Convolutional Neural Network (CNN)↗
Fundamentals of Convolutional Neural Networks, including neural network implementation, creating CNN layers, and MNIST classification. Written in Korean.
May 20, 2021 - Linear Regression: Explanation and Example↗
Introduction to linear regression with simple Python examples and Boston house price dataset. Written in Korean.
May 4, 2021