<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>jaehong21.com</title><description>Jaehong Jung&apos;s personal blog</description><link>https://jaehong21.com/</link><item><title>How would you answer &quot;Why does a CPU throttle?&quot;</title><link>https://jaehong21.com/posts/answer-why-cpu-throttling/</link><guid isPermaLink="true">https://jaehong21.com/posts/answer-why-cpu-throttling/</guid><description>A short piece about reading the hidden intent behind the simple question &quot;Why does a CPU throttle?&quot;</description><pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Istio Part 2: Ambient Mode Under the Hood via Envoy Configs</title><link>https://jaehong21.com/posts/channel-io-istio-ambient-02/</link><guid isPermaLink="true">https://jaehong21.com/posts/channel-io-istio-ambient-02/</guid><description>A deep dive into how Istio Ambient mode&apos;s HBONE tunneling and traffic redirection are implemented in Envoy configs.</description><pubDate>Tue, 14 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Istio Part 1: Why Istio Ambient Mode?</title><link>https://jaehong21.com/posts/channel-io-istio-ambient-01/</link><guid isPermaLink="true">https://jaehong21.com/posts/channel-io-istio-ambient-01/</guid><description>Introduction to why Channel.io&apos;s DevOps team chose Istio Ambient mode and how it works.</description><pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Investigating Istio AuthorizationPolicy ext_authz in Envoy Config</title><link>https://jaehong21.com/posts/istio-ext-authz-envoy-config/</link><guid isPermaLink="true">https://jaehong21.com/posts/istio-ext-authz-envoy-config/</guid><description>Analyzing how Istio AuthorizationPolicy&apos;s action: CUSTOM works in Envoy config based on actual envoy config dump.</description><pubDate>Tue, 10 Mar 2026 00:00:00 GMT</pubDate></item><item><title>A common Python async trap: one sync function that blocked the Liveness Probe</title><link>https://jaehong21.com/posts/python-async-blocking-probe/</link><guid isPermaLink="true">https://jaehong21.com/posts/python-async-blocking-probe/</guid><description>How calling a CPU-bound sync function inside an async endpoint blocked /v1/health</description><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate></item><item><title>RegularExpression Path Matching in HTTPRoute</title><link>https://jaehong21.com/posts/httproute-regex-path-matching/</link><guid isPermaLink="true">https://jaehong21.com/posts/httproute-regex-path-matching/</guid><description>Deep dive into Istio&apos;s HTTPRoute path matching priority and why PathPrefix always wins over RegularExpression</description><pubDate>Tue, 15 Jul 2025 00:00:00 GMT</pubDate></item><item><title>Identifying Client IP in Istio (Proxy Protocol v2)</title><link>https://jaehong21.com/posts/istio-client-ip-proxy-protocol/</link><guid isPermaLink="true">https://jaehong21.com/posts/istio-client-ip-proxy-protocol/</guid><description>How to obtain the real client IP in an AWS NLB + Istio Gateway environment where even numTrustedProxies doesn&apos;t help, solved with Proxy Protocol v2.</description><pubDate>Wed, 02 Apr 2025 00:00:00 GMT</pubDate></item><item><title>How Channel.io Adopted GitHub Actions Part 2: Operating ARC in Production and Troubleshooting</title><link>https://jaehong21.com/posts/channel-io-gha-arc-02/</link><guid isPermaLink="true">https://jaehong21.com/posts/channel-io-gha-arc-02/</guid><description>Case studies and lessons learned from operating and troubleshooting the Kubernetes Actions Runner Controller (ARC) at Channel.io.</description><pubDate>Wed, 19 Mar 2025 00:00:00 GMT</pubDate></item><item><title>How Channel.io Adopted GitHub Actions Part 1: Building ARC and Supporting Container Jobs</title><link>https://jaehong21.com/posts/channel-io-gha-arc-01/</link><guid isPermaLink="true">https://jaehong21.com/posts/channel-io-gha-arc-01/</guid><description>A story about how Channel.io moved from CircleCI to GitHub Actions with self-hosted runners.</description><pubDate>Tue, 18 Mar 2025 00:00:00 GMT</pubDate></item><item><title>Three months flew away; 2024 Q3 Retrospective</title><link>https://jaehong21.com/posts/retrospect-2024-09/</link><guid isPermaLink="true">https://jaehong21.com/posts/retrospect-2024-09/</guid><description>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.</description><pubDate>Mon, 30 Sep 2024 00:00:00 GMT</pubDate></item><item><title>Considerations About Scaling Out Redis Streams with Producers and Consumers While Designing Uptimeninja.io</title><link>https://jaehong21.com/posts/uptimeninja-redis-stream/</link><guid isPermaLink="true">https://jaehong21.com/posts/uptimeninja-redis-stream/</guid><description>I am conceptualizing an event-driven architecture using Redis Streams for the Uptimeninja.io service. Along the way, I&apos;ve encountered several challenges related to scaling out producers and consumers.</description><pubDate>Sun, 28 Jul 2024 00:00:00 GMT</pubDate></item><item><title>First 3 Months as a DevOps Engineer; 2024 Q2 Retrospective</title><link>https://jaehong21.com/posts/retrospect-2024-06/</link><guid isPermaLink="true">https://jaehong21.com/posts/retrospect-2024-06/</guid><description>I can confidently say that over the past 3 months, I&apos;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.</description><pubDate>Sun, 30 Jun 2024 00:00:00 GMT</pubDate></item><item><title>Ubuntu; How to install on-premise Kubernetes using kubeadm</title><link>https://jaehong21.com/posts/ubuntu-install/</link><guid isPermaLink="true">https://jaehong21.com/posts/ubuntu-install/</guid><description>Complete guide to install vanilla Kubernetes on Ubuntu machines using kubeadm. Also providing ways to operate Nvidia GPU nodes on kubernetes.</description><pubDate>Sat, 11 May 2024 00:00:00 GMT</pubDate></item><item><title>Creating Lightweight Java Container with Custom JRE</title><link>https://jaehong21.com/posts/java-jdeps-jlink/</link><guid isPermaLink="true">https://jaehong21.com/posts/java-jdeps-jlink/</guid><description>Learn to drastically cut Java Docker image sizes using jdeps and jlink for creating custom Java Runtime Environment</description><pubDate>Mon, 08 Apr 2024 00:00:00 GMT</pubDate></item><item><title>Complete Guide to install Arch Linux on bare metal from scratch</title><link>https://jaehong21.com/posts/arch-linux-01-install/</link><guid isPermaLink="true">https://jaehong21.com/posts/arch-linux-01-install/</guid><description>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.</description><pubDate>Sat, 16 Mar 2024 00:00:00 GMT</pubDate></item><item><title>Arch Linux; How to install on-premise Kubernetes using kubeadm</title><link>https://jaehong21.com/posts/arch-linux-install/</link><guid isPermaLink="true">https://jaehong21.com/posts/arch-linux-install/</guid><description>Complete guide to install vanilla Kubernetes on Arch Linux machines using kubeadm.</description><pubDate>Thu, 14 Mar 2024 00:00:00 GMT</pubDate></item><item><title>[K3s-06] How to create an actually safe secrets for GitOps</title><link>https://jaehong21.com/posts/k3s-06-sealed-secrets/</link><guid isPermaLink="true">https://jaehong21.com/posts/k3s-06-sealed-secrets/</guid><description>Kubernetes secrets are not actually safe to store on git. it is just base64 encoded. sealed secrets are encrypted with a key pair.</description><pubDate>Thu, 21 Dec 2023 00:00:00 GMT</pubDate></item><item><title>[K3s-05] How to automate issuing TLS certificate in K3s ingress</title><link>https://jaehong21.com/posts/k3s-05-https-certificate/</link><guid isPermaLink="true">https://jaehong21.com/posts/k3s-05-https-certificate/</guid><description>How to attach TLS certificate to K3s ingress using let&apos;s encrypt and dns-01 challlenges. Also, how to attach TLS certificate using Cloudflare Origin CA with proxied to Cloudflare Network</description><pubDate>Tue, 19 Dec 2023 00:00:00 GMT</pubDate></item><item><title>[K3s-04] K3s Service LoadBalancer Configuration (Klipper and MetalLB)</title><link>https://jaehong21.com/posts/k3s-04-service-lb/</link><guid isPermaLink="true">https://jaehong21.com/posts/k3s-04-service-lb/</guid><description>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.</description><pubDate>Thu, 14 Dec 2023 00:00:00 GMT</pubDate></item><item><title>[K3s-03] How to Inject Docker Credentials to K3s</title><link>https://jaehong21.com/posts/k3s-03-docker-credentials/</link><guid isPermaLink="true">https://jaehong21.com/posts/k3s-03-docker-credentials/</guid><description>How to download docker credentials from AWS ECR and inject to K3s cluster.</description><pubDate>Sat, 09 Dec 2023 00:00:00 GMT</pubDate></item><item><title>[K3s-02] How to Access K3s cluster with kubectl from outside</title><link>https://jaehong21.com/posts/k3s-02-access-outside/</link><guid isPermaLink="true">https://jaehong21.com/posts/k3s-02-access-outside/</guid><description>How to Access K3s cluster with kubectl from outside. To issue kubeconfig credential to access K3s API server.</description><pubDate>Thu, 07 Dec 2023 00:00:00 GMT</pubDate></item><item><title>[K3s-01] How to install K3s and setup Terraform</title><link>https://jaehong21.com/posts/k3s-01-install/</link><guid isPermaLink="true">https://jaehong21.com/posts/k3s-01-install/</guid><description>How to initially setup K3s cluster and setup Terraform for K3s nodes.</description><pubDate>Wed, 06 Dec 2023 00:00:00 GMT</pubDate></item><item><title>SPARCS X WING Session 2023</title><link>https://jaehong21.com/posts/sparcs-wing-session/</link><guid isPermaLink="true">https://jaehong21.com/posts/sparcs-wing-session/</guid><description>SPARCS(Programmer&apos;s association from KAIST) X WING (students&apos; developer club associated to GIST), have held an event to share each member&apos;s developer experience</description><pubDate>Sat, 16 Sep 2023 00:00:00 GMT</pubDate></item><item><title>GIST DEV NIGHT 2023</title><link>https://jaehong21.com/posts/gist-dev-night-2023/</link><guid isPermaLink="true">https://jaehong21.com/posts/gist-dev-night-2023/</guid><description>Speaker at GIST Developer&apos;s Night 2023, giving lecture about polyglot developer and why should you become one.</description><pubDate>Wed, 13 Sep 2023 00:00:00 GMT</pubDate></item><item><title>Introducing Bitcoin nodes&apos; boostrap process and its protocol</title><link>https://jaehong21.com/posts/bitcoin-protocol/</link><guid isPermaLink="true">https://jaehong21.com/posts/bitcoin-protocol/</guid><description>Introducing basic steps of two different bitcoin nodes communicate at first step with some bitcoin protocol.</description><pubDate>Thu, 10 Aug 2023 00:00:00 GMT</pubDate></item><item><title>Sudadu</title><link>https://jaehong21.com/posts/sudadu/</link><guid isPermaLink="true">https://jaehong21.com/posts/sudadu/</guid><description>We developed a Flutter app that recommends similar types of problems from the KSAT workbook. Deployed ML using BentoML and AWS Lambda.</description><pubDate>Tue, 13 Jun 2023 00:00:00 GMT</pubDate></item><item><title>1st GIST X GDSC Hackathon; GIST Attendance</title><link>https://jaehong21.com/posts/gist-attendance/</link><guid isPermaLink="true">https://jaehong21.com/posts/gist-attendance/</guid><description>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.</description><pubDate>Sat, 27 May 2023 00:00:00 GMT</pubDate></item><item><title>Custom Wrapper Function in Golang with Context</title><link>https://jaehong21.com/posts/wrapper-golang/</link><guid isPermaLink="true">https://jaehong21.com/posts/wrapper-golang/</guid><description>How to create custom wrapper function to inject Database object and user id from JWT and use it in each API handler.</description><pubDate>Thu, 20 Apr 2023 00:00:00 GMT</pubDate></item><item><title>Building Container from scratch without Docker</title><link>https://jaehong21.com/posts/container-without-docker/</link><guid isPermaLink="true">https://jaehong21.com/posts/container-without-docker/</guid><description>Building Container from scratch without Docker</description><pubDate>Fri, 24 Mar 2023 00:00:00 GMT</pubDate></item><item><title>Concurrent Database Connection and Query execution in Rust</title><link>https://jaehong21.com/posts/concurrent-postgres-query/</link><guid isPermaLink="true">https://jaehong21.com/posts/concurrent-postgres-query/</guid><description>Considering creating initial pool time and concurrent execution of database while building API server using Rust.</description><pubDate>Sun, 05 Mar 2023 00:00:00 GMT</pubDate></item><item><title>Datguri</title><link>https://jaehong21.com/posts/datguri/</link><guid isPermaLink="true">https://jaehong21.com/posts/datguri/</guid><description>Communicate easily with other people in same website using Chrome extension.</description><pubDate>Sun, 05 Mar 2023 00:00:00 GMT</pubDate></item><item><title>Python GIL (Global Interpreter Lock)</title><link>https://jaehong21.com/posts/python-gil/</link><guid isPermaLink="true">https://jaehong21.com/posts/python-gil/</guid><description>Poor performance of python compare to other programming language is always being an issue, and this cannot be independent of GIL.</description><pubDate>Sat, 14 Jan 2023 00:00:00 GMT</pubDate></item><item><title>What is NAT instance?</title><link>https://jaehong21.com/posts/nat-instance/</link><guid isPermaLink="true">https://jaehong21.com/posts/nat-instance/</guid><description>Creating NAT instance using Terraform to access internet from private subnet.</description><pubDate>Wed, 28 Sep 2022 00:00:00 GMT</pubDate></item><item><title>What is Bastion Host?</title><link>https://jaehong21.com/posts/bastion-host/</link><guid isPermaLink="true">https://jaehong21.com/posts/bastion-host/</guid><description>Divide public and private subnet using terraform and create bastion host to access private subnet.</description><pubDate>Tue, 27 Sep 2022 00:00:00 GMT</pubDate></item><item><title>Simple Web Server using Rust</title><link>https://jaehong21.com/posts/rust-web-server/</link><guid isPermaLink="true">https://jaehong21.com/posts/rust-web-server/</guid><description>Build simple multi-thread web server using Rust&apos;s built-in TcpListener module.</description><pubDate>Wed, 14 Sep 2022 00:00:00 GMT</pubDate></item><item><title>Simple Web Server with C programming</title><link>https://jaehong21.com/posts/c-web-server/</link><guid isPermaLink="true">https://jaehong21.com/posts/c-web-server/</guid><description>Building simple web server with socket programming using C.</description><pubDate>Tue, 13 Sep 2022 00:00:00 GMT</pubDate></item><item><title>Socket Programming</title><link>https://jaehong21.com/posts/socket-programming/</link><guid isPermaLink="true">https://jaehong21.com/posts/socket-programming/</guid><description>Basic concepts in OSI 7 layers and detailed interfaces and functions in socket programming.</description><pubDate>Mon, 12 Sep 2022 00:00:00 GMT</pubDate></item><item><title>Generative Adversarial Network (GAN)</title><link>https://ml.jaehong21.com/gan/basic-information</link><guid isPermaLink="true">https://ml.jaehong21.com/gan/basic-information</guid><description>Introduction to Generative Adversarial Networks with MNIST generation example. Written in Korean.</description><pubDate>Thu, 14 Oct 2021 00:00:00 GMT</pubDate></item><item><title>Sequence-to-Sequence: Seq2Seq</title><link>https://ml.jaehong21.com/sequence-to-sequence/seq2seq</link><guid isPermaLink="true">https://ml.jaehong21.com/sequence-to-sequence/seq2seq</guid><description>Introduction to Seq2Seq models, covering attention decoder, English-French and Korean-English translators. Written in Korean.</description><pubDate>Thu, 05 Aug 2021 00:00:00 GMT</pubDate></item><item><title>Recurrent Neural Network (RNN)</title><link>https://ml.jaehong21.com/rnn/basic-information</link><guid isPermaLink="true">https://ml.jaehong21.com/rnn/basic-information</guid><description>Fundamentals of Recurrent Neural Networks, including creating simple RNNs and sentimental classification. Written in Korean.</description><pubDate>Thu, 08 Jul 2021 00:00:00 GMT</pubDate></item><item><title>Autoencoder</title><link>https://ml.jaehong21.com/autoencoder-1/basic-information</link><guid isPermaLink="true">https://ml.jaehong21.com/autoencoder-1/basic-information</guid><description>Introduction to autoencoders with Fashion MNIST example. Written in Korean.</description><pubDate>Fri, 02 Jul 2021 00:00:00 GMT</pubDate></item><item><title>Convolutional Neural Network (CNN)</title><link>https://ml.jaehong21.com/cnn/basic-information</link><guid isPermaLink="true">https://ml.jaehong21.com/cnn/basic-information</guid><description>Fundamentals of Convolutional Neural Networks, including neural network implementation, creating CNN layers, and MNIST classification. Written in Korean.</description><pubDate>Thu, 20 May 2021 00:00:00 GMT</pubDate></item><item><title>Linear Regression: Explanation and Example</title><link>https://ml.jaehong21.com/linear-regression/explanation-and-example</link><guid isPermaLink="true">https://ml.jaehong21.com/linear-regression/explanation-and-example</guid><description>Introduction to linear regression with simple Python examples and Boston house price dataset. Written in Korean.</description><pubDate>Tue, 04 May 2021 00:00:00 GMT</pubDate></item></channel></rss>