Reading My Father's Poem '참회'

My father wrote a poem in Korean and called it 참회(懺悔), ‘Repentance.’ The full poem, followed by my short response.

June 4, 2026 · 4 min read

quant-investment-platform — mid-retrospective

A mid-project retrospective on a personal automated trading platform built with Rust + Python + React. With ETF rebalancing and single-stock signal trading both in place, a record of how the safety layers — halt, block, detect, simulate — got built before going live.

May 31, 2026 · 8 min read

Walk-Forward Analysis and Overfitting Validation

The structure of walk-forward analysis, the metrics it produces (IS-OOS gap, parameter stability), a momentum-lookback tuning case, and the limits that keep it from being a universal validator.

May 14, 2026 · 5 min read

Korean Account Types and Investment Constraints

The core constraints of the four Korean retail account types — general, ISA, pension savings, and IRP — covering tax-free thresholds, tax deductions, the 70% risk-asset cap, and access to direct foreign investment, plus a strategy-to-account mapping.

May 13, 2026 · 5 min read

Backtest Pitfalls Case Study

Concrete cases of look-ahead bias and survivorship bias — full-period momentum normalization, financial disclosure lag, close-on-close fills, S&P 500 reconstitution, the limits of free APIs — followed by an avoidance checklist.

May 12, 2026 · 5 min read

Efficient Frontier and Portfolio Optimization

Covers Markowitz’s mean-variance model as the mathematical foundation for setting asset weights, the two optimal points on the efficient frontier (Min-Variance and Tangency), and the practical adjustments that compensate for the model’s weaknesses.

May 11, 2026 · 6 min read

Microservices Architecture

MSA is a decision about which criterion to use to decompose the system. Domain boundary, data ownership, scale pattern, failure isolation — the chosen criterion creates the service boundaries, and those boundaries decide communication and data in turn.

May 9, 2026 · 7 min read

Claude Code Config in Four Layers

settings.json, CLAUDE.md, slash commands, subagents, hooks. Claude Code’s customization surface settles into four layers once you pick one axis: when does each one step in?

May 1, 2026 · 11 min read

macOS Dev Environment: Dotfiles

alacritty + tmux + nvim + zsh + Claude Code in a single screen. The choices and structure behind a terminal-centric development environment.

April 30, 2026 · 10 min read

Sensitive Data Encryption — Module Design and Migration Retrospective

A retrospective on column-level encryption of sensitive data in a running service. Envelope encryption, DEK granularity decisions, the WHERE clause constraint that led to HMAC, and the migration automation Skill that spread the work across the org.

January 15, 2026 · 5 min read

Internal Hackathon Retrospective — 1st Place

A retrospective on the internal hackathon. How an idea I proposed evolved with the team into a 1st-place project and an internal launch — and the starting point for using AI tools in earnest.

January 5, 2026 · 3 min read

JIRA Sprint Workflows and Git/GitHub Integration

Looking at JIRA’s issues and workflows as a graph of work units — covering the Sprint lifecycle, issue hierarchy, Git/GitHub integration patterns, and automation flows.

December 30, 2025 · 6 min read

GitHub Actions Fundamentals — Workflow, Job, Step

GitHub Actions seen as an event-driven automation engine — the three-layer abstraction of workflow / job / step, plus the operational details of triggers, runners, and secrets.

December 15, 2025 · 6 min read

GitHub PRs and the Code Review Cycle

Looking at GitHub PRs as a collaboration layer on top of Git’s change graph, and walking through the Code Review cycle, PR-level design, and merge strategies.

November 30, 2025 · 5 min read

Git Workflow Basics — Commits, Branches, Merge vs Rebase

Looking at Git as a graph of changes — and seeing how commit hygiene, branching strategy, and the merge-vs-rebase choice are all decisions about the shape of that graph.

November 15, 2025 · 5 min read

Security Groups and NACLs

How Security Groups (stateful, per-instance) and NACLs (stateless, per-subnet) form different layers of defense in a VPC, plus the common pitfalls each surface.

November 1, 2025 · 5 min read

Connecting VPCs to Other Networks — Peering, VPN, Transit, PrivateLink

Comparing the four mechanisms that connect a VPC to other VPCs, on-premises networks, and external services — Peering, Transit Gateway, Site-to-Site VPN, and PrivateLink — across topology and cost.

October 20, 2025 · 5 min read

Profitability-Based Traffic Throttling Retrospective

Retrospective on building a system that automatically identifies low-performing SSP inventory and throttles traffic to improve contribution margin. Covers the evolution from Imp Cost Ratio to a predicted contribution margin rate approach.

October 15, 2025 · 3 min read

VPC Traffic Flow with Route Tables

How Route Tables decide traffic paths inside a VPC, the role of Internet Gateway and NAT Gateway as external exits, and the actual meaning of Public/Private Subnet.

October 1, 2025 · 5 min read

VPC and the Isolation Model

How VPC simulates a private network boundary by combining IP CIDR, Subnet, and Tenancy. Includes vendor naming map across AWS / GCP / Azure / Alibaba.

September 15, 2025 · 5 min read

Technical Indicators and Trading Signals

Covers technical indicators (RSI, SMA Cross, MACD, Bollinger Bands) for reading price movements, composite signal design, and a comparison of three strategy types across different time horizons.

September 1, 2025 · 5 min read

Portfolio Management and Factor Scoring

Covers factor scoring methods (Z-Score, Rank) for combining indicators into a single score, plus the basics of rebalancing and asset allocation.

August 15, 2025 · 4 min read

Backtest Performance Metrics

Covers the formulas and interpretation of CAGR, MDD, Sharpe Ratio, and other backtest metrics, plus five common backtesting pitfalls.

August 1, 2025 · 4 min read

Momentum and Dividend

Covers the role of price momentum and dividend yield as factors in quant investing.

July 15, 2025 · 4 min read

Valuation and Quality Indicators

Covers how to judge whether a company is cheap (valuation) and whether it earns well (quality) — formulas and interpretation of PER, PBR, PSR, ROE, ROA, and debt ratio.

July 1, 2025 · 5 min read

Stock Data Basics

Covers OHLCV data as the starting point of quant investing, the difference between simple and log returns, and the meaning of market capitalization.

June 15, 2025 · 4 min read

Zero-Downtime Data Transition Pattern

A three-step pattern combining dual write and fallback read to transition data formats in live services without downtime.

April 15, 2025 · 4 min read

LR-based ML Lifecycle Retrospective

Building my first ML Lifecycle — a three-tier architecture for an ad Fallback CTR prediction — as a backend engineer without an AI background. The technical decisions I made, and what I learned through running it.

March 10, 2025 · 4 min read

MLflow and the ML Lifecycle

Which slot of the ML lifecycle each MLflow component fills, and which pieces a lightweight team can pick.

February 20, 2025 · 6 min read

Circuit Breaker

A Circuit Breaker’s trip trigger and recovery strategy must be designed together. Trip without recovery cuts the dependency permanently; recovery without a trip basis becomes meaningless cycling.

February 15, 2025 · 7 min read

Ad System Outage Retrospective — A Shared Dependency and a Single Point of Failure

An external event drove ad traffic far above normal, triggering a cascading failure. The real problem was that the filtering component was a single point of failure — and the fallback sat on top of it too, so one collapse pulled both down at once. The fix took three paths: removing the fallback’s dependency (independence), adding rate limiting to the component itself (protection), and reconsidering the runtime (throughput).

February 13, 2025 · 7 min read

Choosing a Model Training Framework: sklearn vs ONNX

sklearn and ONNX aren’t competing at the same layer. Once you separate their roles, the real question becomes ‘do I need an ONNX layer at all?’

February 1, 2025 · 5 min read

Revisiting Logistic Regression

The structure and characteristics of Logistic Regression, and why an old model still serves as the baseline in CTR prediction.

January 15, 2025 · 5 min read

The Blind Spot in Deploy Change Verification — Campaign Cache Incident Retrospective

The deploy was two days old, and the metrics had been calm the whole time. The moment we turned off the cache refresh batch, ad serving stopped. A retrospective on the missing verification of what a deploy actually changed.

November 27, 2024 · 3 min read

Kubernetes Fundamentals

Container orchestration basics and what backend developers need to know: core objects, networking, scaling with HPA, and operational essentials.

April 10, 2024 · 7 min read

Go Concurrency Model

Go’s concurrency model builds on CSP, providing Goroutines and Channels as core tools. An overview of how each works and when to choose what.

April 5, 2024 · 4 min read

concurrency-go

A record of implementing and benchmarking three Go concurrency patterns — mutex, channel, and lock-free — to build hands-on understanding.

April 3, 2024 · 3 min read

MongoDB vs Redis — Same NoSQL, Different Roles

Why MongoDB and Redis end up in different roles even under the same NoSQL umbrella. A comparison across data model, storage, schema, scaling, and use cases.

April 2, 2024 · 5 min read

Spring WebFlux Fundamentals — Non-blocking I/O and the Reactive Stack

Spring MVC assigns one thread per request. When I/O waits pile up, threads sit idle. WebFlux replaces this with an event loop-based non-blocking model. A summary of the structural differences from MVC, the Reactor pattern, and when to choose which.

March 25, 2024 · 4 min read

HTTP/1.1 and HTTP/2

HTTP/1.1 processes requests and responses sequentially. HTTP/2 changed this with multiplexing, binary framing, and header compression. A summary of the differences between the two protocols and gRPC, which runs on top of HTTP/2.

March 20, 2024 · 5 min read

Docker Container Fundamentals

Covers container concepts, the differences from VMs, Docker’s architecture, and the basics of Dockerfile and Docker Compose.

March 15, 2024 · 5 min read

Horizontal vs Vertical Slicing

The difference between splitting code by technical layers (horizontal) and by features or domains (vertical). Trade-offs and selection criteria for each approach.

March 10, 2024 · 3 min read

Ad Fallback Server Design Retrospective

Designing a Nest.js-based fallback server while removing a legacy ad server. Why a horizontal layered architecture fit better than Nest.js’s default vertical module slicing for a single API with complex business logic.

February 28, 2024 · 3 min read

Nest.js Fundamentals — DI and Module System

Nest.js provides a DI container and Module system at the framework level in the Node.js ecosystem. A summary of its core design principles: IoC, DI, Module, and Provider.

February 26, 2024 · 5 min read

Layered Architecture and Dependency Inversion

Layered architecture separates code into horizontal layers by technical responsibility. A summary of the four-layer structure, dependency direction rules, and how DIP decouples layers.

February 23, 2024 · 4 min read

Kafka Fundamentals and KRaft Mode

Core Kafka concepts (topics, partitions, consumer groups, replication) and the background behind KRaft mode, which removes the ZooKeeper dependency.

February 22, 2024 · 5 min read

Implementing Hexagonal Architecture in Go

Core concepts of Hexagonal Architecture and its idiomatic implementation in Go using implicit interfaces and package structure for dependency direction control.

February 21, 2024 · 5 min read

Builder

Builder is the answer when three limits of constructors meet at once — many parameters, some optional, and step-wise validation. With fewer than all three, simpler tools suffice. When the language provides rich named/default parameters, the need for Builder shrinks as well.

February 11, 2024 · 5 min read

Factory

Factory’s shared intent is separating creation from use. The three variants — Factory Method, Abstract Factory, and Static Factory Method — split creation differently and suit different conditions. Static Factory Method is the variant most often encountered in practice, and DI containers absorb part of Factory’s explicit role.

February 4, 2024 · 5 min read

Singleton

Singleton is one of the simplest patterns but the canonical anti-pattern debate. The decision to bundle single-instance guarantee with global access into one pattern causes tight coupling and test difficulty. DI is the general alternative that separates the two intents.

January 28, 2024 · 5 min read

Dependency Injection — The Hierarchy of DIP, IoC, and DI

DIP (principle), IoC (pattern), and DI (technique) sit at different levels of abstraction. The hierarchy must be clear before framework features and design principles can be told apart.

January 25, 2024 · 6 min read

Incremental Cache Refresh Pattern

A pattern for switching from full cache refresh to incremental refresh. Separating data by update frequency and applying change detection reduces network costs.

January 20, 2024 · 4 min read

Cache Refresh Optimization Retrospective

How I reduced network costs and enabled instance downscaling by switching from full cache refresh to incremental refresh for campaign configuration data.

January 15, 2024 · 2 min read

What RDB Transaction ACID Actually Guarantees

What each of the four ACID properties actually guarantees in an RDB transaction. A/C/D are relatively clear guarantees, but only I has ’levels’ — the gateway to the correctness vs. concurrency trade-off.

September 1, 2023 · 4 min read

Two-Layer Control Loop for Ad Budget Pacing — Retrospective

A retrospective on moving ad budget pacing from a fixed-rule scheme to a two-layer control loop — per-campaign learning sets the baseline, real-time correction absorbs drift.

August 21, 2023 · 3 min read

rust-server

A record of implementing the multithreaded HTTP server from Rust Book Chapter 20, experiencing how ownership and concurrency safety are enforced at the type level.

March 13, 2022 · 4 min read

TCP and UDP

Two transport protocols that backend developers encounter constantly. A summary of TCP and UDP — connection establishment, reliability guarantees, flow/congestion control mechanisms, and selection criteria.

March 1, 2022 · 9 min read

SwapDo Startup Story

SwapDo, a deepfake-based face synthesis meme service. A record of five months as a developer and team lead in a startup team.

July 1, 2021 · 4 min read

Session Authentication and JWT

HTTP is stateless. Maintaining user authentication requires storing state somewhere. This post covers the structure, trade-offs, and storage strategies of server-side sessions and client-side JWT tokens.

March 20, 2021 · 4 min read

55L(GGS) Startup Story

A startup born from a casual League of Legends habit. From architecture design to desktop apps, a record of two people building a service that grew to 10,000 users over five months.

March 13, 2021 · 3 min read

GDG Korea Android 11 Hackathon — YouTube Together

Entering the GDG Korea Android 11 Hackathon solo, building both server and app in three weeks.

August 29, 2020 · 2 min read

KRIC Station Public Data Hackathon — Hidden Rest Areas

Korea Railroad Industry Information Center’s public-data hackathon. A three-person team built an Android app that surfaces hidden rest spaces inside subway stations, over three weeks.

July 31, 2020 · 3 min read