Skip to content
May Greetings for Everyone — The Story of Daon Card thumbnail

May Greetings for Everyone — The Story of Daon Card

May is a special month in Korea — packed with occasions to reach out to the people we love. Children’s Day (May 5), Parents’ Day (May 8), Teachers’ Day (May 15), Couples’ Day (May 21)… it’s no accident the whole month is called Family Month. Flower shops overflow with carnations, and KakaoTalk fills up with heartfelt digital cards. Sending a digital greeting card has become second nature. But I want to ask a simple question. ...

Published date: 2026-05-08 · Reading time: 4 min · Word count: 1611 words · Author: Isaac
Why Does Copy-Pasting from HWP Cause '?' in MSSQL — VARCHAR vs NVARCHAR Explained thumbnail

Why Does Copy-Pasting from HWP Cause '?' in MSSQL — VARCHAR vs NVARCHAR Explained

Sound Familiar? 3 PM. Your phone rings, right on schedule. “I posted an announcement on the website, but the text looks weird. There are question marks everywhere.” The person on the other end insists they “just typed it normally, nothing special.” But if you’ve dealt with Korean systems long enough, you already know where this is going. A few more questions confirm it: they copied and pasted from an HWP document directly into the web editor. It looked fine in the preview. But after saving, this is what appeared on screen: ...

Published date: 2026-04-20 · Reading time: 8 min · Word count: 4008 words · Author: Isaac
`Promise.all` vs `Promise.allSettled`: The Difference That Matters thumbnail

`Promise.all` vs `Promise.allSettled`: The Difference That Matters

I built a dashboard. I was proud of it. Three lines of code using Promise.all to fetch three APIs at once — and the code review feedback was “clean.” Multiple tasks running concurrently - with Promise.all, one failure affects the whole thing Photo: Unsplash javascript 라인 넘버 읽기: OFF 라인 넘버 읽기 기능 도움말 라인 넘버 읽기 기능 이 버튼은 스크린 리더 사용자를 위한 기능입니다. ...

Published date: 2026-04-08 · Reading time: 7 min · Word count: 1451 words · Author: Isaac
Function Declarations vs Expressions: Hoisting Explained thumbnail

Function Declarations vs Expressions: Hoisting Explained

At some point while writing JavaScript, you’ll end up with code like this: javascript 라인 넘버 읽기: OFF 라인 넘버 읽기 기능 도움말 라인 넘버 읽기 기능 이 버튼은 스크린 리더 사용자를 위한 기능입니다. ...

Published date: 2026-04-04 · Reading time: 11 min · Word count: 2137 words · Author: Isaac
Scheduled Publishing with GitHub Actions Every 3 Hours thumbnail

Scheduled Publishing with GitHub Actions Every 3 Hours

Introduction When running a static blog, “scheduled publishing” and “build limits” often become problems at the same time. In particular, building on every commit can easily hit build limits on platforms like Cloudflare Pages. In this post, I’ll walk you through the approach I’m actually using: running a publish check with GitHub Actions every 3 hours to handle scheduled publishing. The key idea is “check only at set intervals, and publish only when needed.” ...

Published date: 2026-01-30 · Reading time: 11 min · Word count: 2226 words · Author: Isaac
Improving Multilingual Blog UX: Building a Smart Language Suggestion Banner thumbnail

Improving Multilingual Blog UX: Building a Smart Language Suggestion Banner

Introduction Running a blog in both Korean and English revealed an interesting problem. When sharing blog links internationally, visitors often land on the Korean page. Those who can’t read Korean are confused, right? Similarly, when Korean readers click on English post links shared in Korean communities, they face the same issue. While there’s a language switcher button in the header, new visitors often struggle to find it. This isn’t user-friendly, and from an accessibility perspective, it’s not ideal either. ...

Published date: 2026-01-23 · Reading time: 14 min · Word count: 6704 words · Author: Isaac
Building a Dynamic Comment System on a Static Site: Giscus + GraphQL API thumbnail

Building a Dynamic Comment System on a Static Site: Giscus + GraphQL API

Introduction Blogs built with Static Site Generators (SSG) are incredibly fast and secure. However, adding dynamic features like comments requires careful consideration. This blog uses Giscus, a GitHub Discussions-based comment system, but there was one inconvenience. Comments only appear at the bottom of each post, making it difficult to see at a glance which articles have active discussions. So I built three features: Display comment counts in post lists - See which articles have ongoing conversations Show recent comments on the explore page - View recent blog activity at a glance Create an all comments page - Browse all comments in one place This article shares the process of bringing dynamic comment information to a static site using GitHub GraphQL API while maintaining optimal performance. ...

Published date: 2026-01-16 · Reading time: 16 min · Word count: 8000 words · Author: Isaac
Code Block Accessibility Improvement: Line Numbers That Screen Reader Users Can Choose thumbnail

Code Block Accessibility Improvement: Line Numbers That Screen Reader Users Can Choose

Introduction Recently, I started building and operating a blog using Hugo with the PaperMod theme. Using someone else’s theme has the advantage of quick setup, but not everything fits my needs perfectly. After customizing many parts to match my preferences, I noticed some issues with the code blocks. Line numbers were implemented with <table> tags. While this doesn’t violate accessibility guidelines, it felt not semantic. Moreover, I wondered: what’s the experience for screen reader users? I found a better approach using CSS Counters. ...

맨 위로