Skip to content
Blog post thumbnail: Why Does Copy-Pasting from HWP Cause '?' in MSSQL — VARCHAR vs NVARCHAR Explained - Special characters from HWP turning into '?' in MSSQL? Learn why VARCHAR breaks on Korean documents, how code pages work, and how to fix it with NVARCHAR and the N prefix. (https://www.codeslog.com/en/posts/mssql-varchar-nvarchar-unicode/)

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
Blog post thumbnail: Improving Multilingual Blog UX: Building a Smart Language Suggestion Banner - Built a banner that detects browser language and automatically suggests the appropriate language version. Designed to meet WCAG 2.2 AA with keyboard navigation and screen reader support. (https://www.codeslog.com/en/posts/language-switcher-banner/)

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
Blog post thumbnail: Building a Dynamic Comment System on a Static Site: Giscus + GraphQL API - Learn how I implemented comment counts, recent comments, and an all comments page on my Hugo static blog using GitHub GraphQL API and smart caching strategies for optimal performance and UX. (https://www.codeslog.com/en/posts/blog-comment-visibility-features/)

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
Blog post thumbnail: Code Block Accessibility Improvement: Line Numbers That Screen Reader Users Can Choose - We've improved the accessibility of code blocks in our Hugo blog for screen reader users. (https://www.codeslog.com/en/posts/code-block-accessibility-improvement/)

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. ...

맨 위로