Writing
Contributing to Netty: Why Check the Direct Memory Limit?
Netty is a Java framework for building network servers and clients. It abstracts common work such as accepting connections, reading data, and sending responses, so application developers can focus on what to do with incoming data.

2.7× Request Throughput: Introducing Java Virtual Threads
A read API hit a p95 latency of seven seconds in a load test. Requests weren't failing.They were just slow. Throughput wouldn't climb past 16.6 requests per second either. Seven seconds wasn't something I could leave alone.

Turning Coding Test Results into Curriculum-Level Learning Diagnostics
‘Coding tests leave scores, but make it difficult to identify what students don't understand.This service uses NCIC informatics achievement standards to guide AI-generated questions and turn grading results into learning diagnostics.It aims to provide a diagnostic framework for roughly 70,000 coaching centers in India that lack a standardized curriculum.’

Refactoring an LLM Pipeline: Finding Where Tokens Leak
I have a pipeline that reads English technical articles and turns them into Korean introduction cards. It checks feeds from 178 vendors, selects useful material, writes cards, and serves them automatically. The output looks like this.

Where Do University Team Projects Go in the AI Transition?
During the first semester of my junior year, I split my time between university and work. At school, I did team projects. At work, I built services with AI. Both places used the word ‘collaboration,’ but they meant completely different things.
Turning ‘Make It Look Good’ into Code
Making Instagram carousel posts by hand for a service I operated had become tedious. I wanted to automate it with AI.

An ML Project Where We Decided Not to Build the ML Yet
For a semester-long team project, we built an Android app called Zansol. Open YouTube or Instagram during a study session, and a nudging popup appears within 0.2 seconds. Return to studying, and your character earns coins. Ignore it, and the character loses health.

Moving a Production Database: Pressing a Button You Can't Undo
I stopped just before pressing Enter.
Let's Automate My Social Life
Replying on KakaoTalk has always been hard. I wondered whether developing social skills or outsourcing them would be faster, and leaned toward outsourcing. So I sat an agent in front of my chats.
A Sufficiently Detailed Specification Is Indistinguishable from Code
When Karpathy called English the hottest new programming language, many people nodded. So did I. After writing natural-language documents to control agents and repeatedly watching them break, I started to wonder: perhaps English hasn't become a programming language. Perhaps it only works when we write it like one.
Essential and Accidental Complexity: How Far Can Functional Programming Go in Spring?
An order service built with Kotlin and Spring usually looks something like this.

Choosing Transaction Boundaries: Narrowing Them with the Outbox Pattern
The reward-earning API, POST /rewards/earn, records a completed order in our database, writes an audit log, and synchronizes with a partner API.

Why Return to SQL in the Age of Vibe Coding?
While reviewing AI-generated JPA code, I repeatedly found myself asking: when does this query actually execute?

What Six Months of Building a Startup Taught Me
The word ‘sports’ usually sits next to professional leagues, broadcasts, and salaries. Our definition was different: if there's competition and an audience, it's a sport. Even rock-paper-scissors.
Catching gRPC Schema Drift Automatically in Kubernetes
A client suddenly throws a runtime error, even though nobody changed its code. Hours of investigation often led to the same cause: someone changed a proto and deployed it to Kubernetes without updating BSR, the Buf Schema Registry. The client was built against BSR; the running server used a different schema.

A Familiar N+1 Problem: The 26× Speedup from Caching
While operating a sports social platform, I noticed how slowly the feed loaded. Introducing Caffeine caching reduced average response time from roughly 800 ms to 38 ms.

No posts in this category yet.