<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>wid's blog</title><link>https://wid-blog.github.io/en/</link><description>Recent content on wid's blog</description><generator>Hugo</generator><language>en</language><lastBuildDate>Thu, 04 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://wid-blog.github.io/en/index.xml" rel="self" type="application/rss+xml"/><item><title>Reading My Father's Poem '참회'</title><link>https://wid-blog.github.io/en/posts/daily/notes/fathers-repentance/</link><pubDate>Thu, 04 Jun 2026 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/daily/notes/fathers-repentance/</guid><description>My father wrote a poem in Korean and called it 참회(懺悔), &amp;lsquo;Repentance.&amp;rsquo; The full poem, followed by my short response.</description></item><item><title>quant-investment-platform — mid-retrospective</title><link>https://wid-blog.github.io/en/posts/career/personal/quant-investment-platform-mid-retrospective/</link><pubDate>Sun, 31 May 2026 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/career/personal/quant-investment-platform-mid-retrospective/</guid><description>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.</description></item><item><title>Walk-Forward Analysis and Overfitting Validation</title><link>https://wid-blog.github.io/en/posts/daily/investment/walk-forward-validation/</link><pubDate>Thu, 14 May 2026 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/daily/investment/walk-forward-validation/</guid><description>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.</description></item><item><title>Korean Account Types and Investment Constraints</title><link>https://wid-blog.github.io/en/posts/daily/investment/korean-account-types/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/daily/investment/korean-account-types/</guid><description>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.</description></item><item><title>Backtest Pitfalls Case Study</title><link>https://wid-blog.github.io/en/posts/daily/investment/backtest-pitfalls-case-study/</link><pubDate>Tue, 12 May 2026 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/daily/investment/backtest-pitfalls-case-study/</guid><description>Concrete cases of look-ahead bias and survivorship bias — full-period momentum normalization, financial disclosure lag, close-on-close fills, S&amp;amp;P 500 reconstitution, the limits of free APIs — followed by an avoidance checklist.</description></item><item><title>Efficient Frontier and Portfolio Optimization</title><link>https://wid-blog.github.io/en/posts/daily/investment/efficient-frontier-optimization/</link><pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/daily/investment/efficient-frontier-optimization/</guid><description>Covers Markowitz&amp;rsquo;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&amp;rsquo;s weaknesses.</description></item><item><title>Microservices Architecture</title><link>https://wid-blog.github.io/en/posts/tech/architecture/microservices-architecture/</link><pubDate>Sat, 09 May 2026 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/architecture/microservices-architecture/</guid><description>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.</description></item><item><title>Event Sourcing and CQRS</title><link>https://wid-blog.github.io/en/posts/tech/architecture/event-sourcing-and-cqrs/</link><pubDate>Thu, 07 May 2026 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/architecture/event-sourcing-and-cqrs/</guid><description>ES and CQRS address how a system&amp;rsquo;s source of truth is shaped and how its views are separated from it. Adoption cost spreads across the system, so I lean toward adopting only when the value can be stated explicitly.</description></item><item><title>Distributed Transactions</title><link>https://wid-blog.github.io/en/posts/tech/architecture/distributed-transactions/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/architecture/distributed-transactions/</guid><description>Distributed transactions are about how a single ACID transaction decomposes across services and how its pieces are reassembled. The roles and trade-offs of 2PC, Saga (Choreography vs Orchestration), and Outbox.</description></item><item><title>Claude Code Config in Four Layers</title><link>https://wid-blog.github.io/en/posts/tech/devenv/claude-code-config-layers/</link><pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/devenv/claude-code-config-layers/</guid><description>settings.json, CLAUDE.md, slash commands, subagents, hooks. Claude Code&amp;rsquo;s customization surface settles into four layers once you pick one axis: when does each one step in?</description></item><item><title>macOS Dev Environment: Dotfiles</title><link>https://wid-blog.github.io/en/posts/tech/devenv/macos-dev-environment/</link><pubDate>Thu, 30 Apr 2026 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/devenv/macos-dev-environment/</guid><description>alacritty + tmux + nvim + zsh + Claude Code in a single screen. The choices and structure behind a terminal-centric development environment.</description></item><item><title>I Threw Away My AirPods</title><link>https://wid-blog.github.io/en/posts/career/dable/starting-sabbatical/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/career/dable/starting-sabbatical/</guid><description>A good engineer isn&amp;rsquo;t someone who knows technology well, but someone who can share that knowledge with their team.</description></item><item><title>Sensitive Data Encryption — Module Design and Migration Retrospective</title><link>https://wid-blog.github.io/en/posts/career/dable/sensitive-data-encryption-retrospective/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/career/dable/sensitive-data-encryption-retrospective/</guid><description>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.</description></item><item><title>Internal Hackathon Retrospective — 1st Place</title><link>https://wid-blog.github.io/en/posts/career/dable/worthy-hackathon-retrospective/</link><pubDate>Mon, 05 Jan 2026 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/career/dable/worthy-hackathon-retrospective/</guid><description>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.</description></item><item><title>JIRA Sprint Workflows and Git/GitHub Integration</title><link>https://wid-blog.github.io/en/posts/tech/devenv/jira-sprint-workflow/</link><pubDate>Tue, 30 Dec 2025 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/devenv/jira-sprint-workflow/</guid><description>Looking at JIRA&amp;rsquo;s issues and workflows as a graph of work units — covering the Sprint lifecycle, issue hierarchy, Git/GitHub integration patterns, and automation flows.</description></item><item><title>GitHub Actions Fundamentals — Workflow, Job, Step</title><link>https://wid-blog.github.io/en/posts/tech/devenv/github-actions-fundamentals/</link><pubDate>Mon, 15 Dec 2025 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/devenv/github-actions-fundamentals/</guid><description>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.</description></item><item><title>GitHub PRs and the Code Review Cycle</title><link>https://wid-blog.github.io/en/posts/tech/devenv/github-pr-and-code-review/</link><pubDate>Sun, 30 Nov 2025 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/devenv/github-pr-and-code-review/</guid><description>Looking at GitHub PRs as a collaboration layer on top of Git&amp;rsquo;s change graph, and walking through the Code Review cycle, PR-level design, and merge strategies.</description></item><item><title>Git Workflow Basics — Commits, Branches, Merge vs Rebase</title><link>https://wid-blog.github.io/en/posts/tech/devenv/git-workflow-basics/</link><pubDate>Sat, 15 Nov 2025 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/devenv/git-workflow-basics/</guid><description>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.</description></item><item><title>Security Groups and NACLs</title><link>https://wid-blog.github.io/en/posts/tech/infra/vpc-security-fundamentals/</link><pubDate>Sat, 01 Nov 2025 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/infra/vpc-security-fundamentals/</guid><description>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.</description></item><item><title>Connecting VPCs to Other Networks — Peering, VPN, Transit, PrivateLink</title><link>https://wid-blog.github.io/en/posts/tech/infra/vpc-connectivity-fundamentals/</link><pubDate>Mon, 20 Oct 2025 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/infra/vpc-connectivity-fundamentals/</guid><description>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.</description></item><item><title>Profitability-Based Traffic Throttling Retrospective</title><link>https://wid-blog.github.io/en/posts/career/dable/profitability-based-traffic-throttling/</link><pubDate>Wed, 15 Oct 2025 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/career/dable/profitability-based-traffic-throttling/</guid><description>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.</description></item><item><title>VPC Traffic Flow with Route Tables</title><link>https://wid-blog.github.io/en/posts/tech/infra/vpc-routing-fundamentals/</link><pubDate>Wed, 01 Oct 2025 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/infra/vpc-routing-fundamentals/</guid><description>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.</description></item><item><title>VPC and the Isolation Model</title><link>https://wid-blog.github.io/en/posts/tech/infra/vpc-isolation-fundamentals/</link><pubDate>Mon, 15 Sep 2025 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/infra/vpc-isolation-fundamentals/</guid><description>How VPC simulates a private network boundary by combining IP CIDR, Subnet, and Tenancy. Includes vendor naming map across AWS / GCP / Azure / Alibaba.</description></item><item><title>Technical Indicators and Trading Signals</title><link>https://wid-blog.github.io/en/posts/daily/investment/signal-technical-indicators/</link><pubDate>Mon, 01 Sep 2025 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/daily/investment/signal-technical-indicators/</guid><description>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.</description></item><item><title>Portfolio Management and Factor Scoring</title><link>https://wid-blog.github.io/en/posts/daily/investment/portfolio-factor-scoring/</link><pubDate>Fri, 15 Aug 2025 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/daily/investment/portfolio-factor-scoring/</guid><description>Covers factor scoring methods (Z-Score, Rank) for combining indicators into a single score, plus the basics of rebalancing and asset allocation.</description></item><item><title>Backtest Performance Metrics</title><link>https://wid-blog.github.io/en/posts/daily/investment/backtest-metrics/</link><pubDate>Fri, 01 Aug 2025 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/daily/investment/backtest-metrics/</guid><description>Covers the formulas and interpretation of CAGR, MDD, Sharpe Ratio, and other backtest metrics, plus five common backtesting pitfalls.</description></item><item><title>Momentum and Dividend</title><link>https://wid-blog.github.io/en/posts/daily/investment/momentum-dividend/</link><pubDate>Tue, 15 Jul 2025 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/daily/investment/momentum-dividend/</guid><description>Covers the role of price momentum and dividend yield as factors in quant investing.</description></item><item><title>Valuation and Quality Indicators</title><link>https://wid-blog.github.io/en/posts/daily/investment/valuation-quality-indicators/</link><pubDate>Tue, 01 Jul 2025 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/daily/investment/valuation-quality-indicators/</guid><description>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.</description></item><item><title>Stock Data Basics</title><link>https://wid-blog.github.io/en/posts/daily/investment/stock-data-basics/</link><pubDate>Sun, 15 Jun 2025 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/daily/investment/stock-data-basics/</guid><description>Covers OHLCV data as the starting point of quant investing, the difference between simple and log returns, and the meaning of market capitalization.</description></item><item><title>Zero-Downtime Data Transition Pattern</title><link>https://wid-blog.github.io/en/posts/tech/architecture/zero-downtime-data-transition/</link><pubDate>Tue, 15 Apr 2025 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/architecture/zero-downtime-data-transition/</guid><description>A three-step pattern combining dual write and fallback read to transition data formats in live services without downtime.</description></item><item><title>Envelope Encryption</title><link>https://wid-blog.github.io/en/posts/tech/security/envelope-encryption/</link><pubDate>Tue, 01 Apr 2025 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/security/envelope-encryption/</guid><description>How the CMK/DEK two-tier key structure in envelope encryption limits key leak impact and simplifies key rotation.</description></item><item><title>LR-based ML Lifecycle Retrospective</title><link>https://wid-blog.github.io/en/posts/career/dable/dsp-fallback-ctr-ml-lifecycle/</link><pubDate>Mon, 10 Mar 2025 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/career/dable/dsp-fallback-ctr-ml-lifecycle/</guid><description>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.</description></item><item><title>MLflow and the ML Lifecycle</title><link>https://wid-blog.github.io/en/posts/tech/ml/mlflow/</link><pubDate>Thu, 20 Feb 2025 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/ml/mlflow/</guid><description>Which slot of the ML lifecycle each MLflow component fills, and which pieces a lightweight team can pick.</description></item><item><title>Circuit Breaker</title><link>https://wid-blog.github.io/en/posts/tech/design-pattern/circuit-breaker/</link><pubDate>Sat, 15 Feb 2025 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/design-pattern/circuit-breaker/</guid><description>A Circuit Breaker&amp;rsquo;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.</description></item><item><title>Rate Limiting</title><link>https://wid-blog.github.io/en/posts/tech/design-pattern/rate-limiting/</link><pubDate>Fri, 14 Feb 2025 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/design-pattern/rate-limiting/</guid><description>Before choosing a rate limit algorithm, the protection layer decides which algorithms are even available. This post lays out how L4/L7/Application layers and Token/Leaky/Sliding/Fixed algorithms intersect.</description></item><item><title>Ad System Outage Retrospective — A Shared Dependency and a Single Point of Failure</title><link>https://wid-blog.github.io/en/posts/career/dable/cascading-failure-retrospective/</link><pubDate>Thu, 13 Feb 2025 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/career/dable/cascading-failure-retrospective/</guid><description>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&amp;rsquo;s dependency (independence), adding rate limiting to the component itself (protection), and reconsidering the runtime (throughput).</description></item><item><title>Choosing a Model Training Framework: sklearn vs ONNX</title><link>https://wid-blog.github.io/en/posts/tech/ml/model-training-frameworks/</link><pubDate>Sat, 01 Feb 2025 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/ml/model-training-frameworks/</guid><description>sklearn and ONNX aren&amp;rsquo;t competing at the same layer. Once you separate their roles, the real question becomes &amp;lsquo;do I need an ONNX layer at all?&amp;rsquo;</description></item><item><title>Revisiting Logistic Regression</title><link>https://wid-blog.github.io/en/posts/tech/ml/logistic-regression/</link><pubDate>Wed, 15 Jan 2025 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/ml/logistic-regression/</guid><description>The structure and characteristics of Logistic Regression, and why an old model still serves as the baseline in CTR prediction.</description></item><item><title>The Blind Spot in Deploy Change Verification — Campaign Cache Incident Retrospective</title><link>https://wid-blog.github.io/en/posts/career/dable/campaign-cache-miss-retrospective/</link><pubDate>Wed, 27 Nov 2024 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/career/dable/campaign-cache-miss-retrospective/</guid><description>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.</description></item><item><title>Kubernetes Fundamentals</title><link>https://wid-blog.github.io/en/posts/tech/infra/kubernetes-fundamentals/</link><pubDate>Wed, 10 Apr 2024 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/infra/kubernetes-fundamentals/</guid><description>Container orchestration basics and what backend developers need to know: core objects, networking, scaling with HPA, and operational essentials.</description></item><item><title>Go Concurrency Model</title><link>https://wid-blog.github.io/en/posts/tech/language/go-concurrency-model/</link><pubDate>Fri, 05 Apr 2024 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/language/go-concurrency-model/</guid><description>Go&amp;rsquo;s concurrency model builds on CSP, providing Goroutines and Channels as core tools. An overview of how each works and when to choose what.</description></item><item><title>concurrency-go</title><link>https://wid-blog.github.io/en/posts/career/personal/concurrency-go-retrospective/</link><pubDate>Wed, 03 Apr 2024 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/career/personal/concurrency-go-retrospective/</guid><description>A record of implementing and benchmarking three Go concurrency patterns — mutex, channel, and lock-free — to build hands-on understanding.</description></item><item><title>MongoDB vs Redis — Same NoSQL, Different Roles</title><link>https://wid-blog.github.io/en/posts/tech/database/mongodb-vs-redis/</link><pubDate>Tue, 02 Apr 2024 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/database/mongodb-vs-redis/</guid><description>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.</description></item><item><title>chat-services</title><link>https://wid-blog.github.io/en/posts/career/personal/chat-services-retrospective/</link><pubDate>Sun, 31 Mar 2024 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/career/personal/chat-services-retrospective/</guid><description>A record of designing and building a chat system as a personal project to gain hands-on experience with Kafka and Hexagonal Architecture.</description></item><item><title>Spring WebFlux Fundamentals — Non-blocking I/O and the Reactive Stack</title><link>https://wid-blog.github.io/en/posts/tech/language/spring-webflux-reactive-stack/</link><pubDate>Mon, 25 Mar 2024 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/language/spring-webflux-reactive-stack/</guid><description>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.</description></item><item><title>HTTP/1.1 and HTTP/2</title><link>https://wid-blog.github.io/en/posts/tech/network/http1-vs-http2/</link><pubDate>Wed, 20 Mar 2024 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/network/http1-vs-http2/</guid><description>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.</description></item><item><title>Docker Container Fundamentals</title><link>https://wid-blog.github.io/en/posts/tech/infra/docker-container-fundamentals/</link><pubDate>Fri, 15 Mar 2024 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/infra/docker-container-fundamentals/</guid><description>Covers container concepts, the differences from VMs, Docker&amp;rsquo;s architecture, and the basics of Dockerfile and Docker Compose.</description></item><item><title>Horizontal vs Vertical Slicing</title><link>https://wid-blog.github.io/en/posts/tech/architecture/horizontal-vertical-slicing/</link><pubDate>Sun, 10 Mar 2024 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/architecture/horizontal-vertical-slicing/</guid><description>The difference between splitting code by technical layers (horizontal) and by features or domains (vertical). Trade-offs and selection criteria for each approach.</description></item><item><title>Ad Fallback Server Design Retrospective</title><link>https://wid-blog.github.io/en/posts/career/dable/ad-fallback-server-retrospective/</link><pubDate>Wed, 28 Feb 2024 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/career/dable/ad-fallback-server-retrospective/</guid><description>Designing a Nest.js-based fallback server while removing a legacy ad server. Why a horizontal layered architecture fit better than Nest.js&amp;rsquo;s default vertical module slicing for a single API with complex business logic.</description></item><item><title>Nest.js Fundamentals — DI and Module System</title><link>https://wid-blog.github.io/en/posts/tech/language/nestjs-di-module-system/</link><pubDate>Mon, 26 Feb 2024 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/language/nestjs-di-module-system/</guid><description>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.</description></item><item><title>Layered Architecture and Dependency Inversion</title><link>https://wid-blog.github.io/en/posts/tech/architecture/layered-architecture/</link><pubDate>Fri, 23 Feb 2024 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/architecture/layered-architecture/</guid><description>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.</description></item><item><title>Kafka Fundamentals and KRaft Mode</title><link>https://wid-blog.github.io/en/posts/tech/infra/kafka-fundamentals-kraft/</link><pubDate>Thu, 22 Feb 2024 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/infra/kafka-fundamentals-kraft/</guid><description>Core Kafka concepts (topics, partitions, consumer groups, replication) and the background behind KRaft mode, which removes the ZooKeeper dependency.</description></item><item><title>Implementing Hexagonal Architecture in Go</title><link>https://wid-blog.github.io/en/posts/tech/architecture/go-hexagonal-architecture/</link><pubDate>Wed, 21 Feb 2024 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/architecture/go-hexagonal-architecture/</guid><description>Core concepts of Hexagonal Architecture and its idiomatic implementation in Go using implicit interfaces and package structure for dependency direction control.</description></item><item><title>Builder</title><link>https://wid-blog.github.io/en/posts/tech/design-pattern/builder/</link><pubDate>Sun, 11 Feb 2024 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/design-pattern/builder/</guid><description>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.</description></item><item><title>Factory</title><link>https://wid-blog.github.io/en/posts/tech/design-pattern/factory/</link><pubDate>Sun, 04 Feb 2024 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/design-pattern/factory/</guid><description>Factory&amp;rsquo;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&amp;rsquo;s explicit role.</description></item><item><title>Singleton</title><link>https://wid-blog.github.io/en/posts/tech/design-pattern/singleton/</link><pubDate>Sun, 28 Jan 2024 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/design-pattern/singleton/</guid><description>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.</description></item><item><title>Dependency Injection — The Hierarchy of DIP, IoC, and DI</title><link>https://wid-blog.github.io/en/posts/tech/design-pattern/dependency-injection/</link><pubDate>Thu, 25 Jan 2024 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/design-pattern/dependency-injection/</guid><description>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.</description></item><item><title>Incremental Cache Refresh Pattern</title><link>https://wid-blog.github.io/en/posts/tech/architecture/incremental-cache-refresh/</link><pubDate>Sat, 20 Jan 2024 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/architecture/incremental-cache-refresh/</guid><description>A pattern for switching from full cache refresh to incremental refresh. Separating data by update frequency and applying change detection reduces network costs.</description></item><item><title>Cache Refresh Optimization Retrospective</title><link>https://wid-blog.github.io/en/posts/career/dable/ad-campaign-cache-optimization/</link><pubDate>Mon, 15 Jan 2024 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/career/dable/ad-campaign-cache-optimization/</guid><description>How I reduced network costs and enabled instance downscaling by switching from full cache refresh to incremental refresh for campaign configuration data.</description></item><item><title>What RDB Transaction ACID Actually Guarantees</title><link>https://wid-blog.github.io/en/posts/tech/database/rdb-transaction-acid/</link><pubDate>Fri, 01 Sep 2023 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/database/rdb-transaction-acid/</guid><description>What each of the four ACID properties actually guarantees in an RDB transaction. A/C/D are relatively clear guarantees, but only I has &amp;rsquo;levels&amp;rsquo; — the gateway to the correctness vs. concurrency trade-off.</description></item><item><title>Two-Layer Control Loop for Ad Budget Pacing — Retrospective</title><link>https://wid-blog.github.io/en/posts/career/dable/balanced-pacing-control/</link><pubDate>Mon, 21 Aug 2023 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/career/dable/balanced-pacing-control/</guid><description>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.</description></item><item><title>rust-server</title><link>https://wid-blog.github.io/en/posts/career/personal/rust-server-retrospective/</link><pubDate>Sun, 13 Mar 2022 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/career/personal/rust-server-retrospective/</guid><description>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.</description></item><item><title>TCP and UDP</title><link>https://wid-blog.github.io/en/posts/tech/network/tcp-udp/</link><pubDate>Tue, 01 Mar 2022 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/network/tcp-udp/</guid><description>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.</description></item><item><title>SwapDo Startup Story</title><link>https://wid-blog.github.io/en/posts/career/startup/swapdo-startup-retrospective/</link><pubDate>Thu, 01 Jul 2021 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/career/startup/swapdo-startup-retrospective/</guid><description>SwapDo, a deepfake-based face synthesis meme service. A record of five months as a developer and team lead in a startup team.</description></item><item><title>Session Authentication and JWT</title><link>https://wid-blog.github.io/en/posts/tech/security/session-and-jwt/</link><pubDate>Sat, 20 Mar 2021 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/tech/security/session-and-jwt/</guid><description>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.</description></item><item><title>55L(GGS) Startup Story</title><link>https://wid-blog.github.io/en/posts/career/startup/55l-ggs-startup-retrospective/</link><pubDate>Sat, 13 Mar 2021 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/career/startup/55l-ggs-startup-retrospective/</guid><description>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.</description></item><item><title>GDG Korea Android 11 Hackathon — YouTube Together</title><link>https://wid-blog.github.io/en/posts/career/hackathon/gdg-korea-android-11-hackathon/</link><pubDate>Sat, 29 Aug 2020 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/career/hackathon/gdg-korea-android-11-hackathon/</guid><description>Entering the GDG Korea Android 11 Hackathon solo, building both server and app in three weeks.</description></item><item><title>KRIC Station Public Data Hackathon — Hidden Rest Areas</title><link>https://wid-blog.github.io/en/posts/career/hackathon/kric-station-public-data-hackathon/</link><pubDate>Fri, 31 Jul 2020 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/posts/career/hackathon/kric-station-public-data-hackathon/</guid><description>Korea Railroad Industry Information Center&amp;rsquo;s public-data hackathon. A three-person team built an Android app that surfaces hidden rest spaces inside subway stations, over three weeks.</description></item><item><title>About</title><link>https://wid-blog.github.io/en/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://wid-blog.github.io/en/about/</guid><description>&lt;p&gt;Backend engineer. Writing about technology and lessons learned along the way.&lt;/p&gt;</description></item></channel></rss>