Skip to content

Form Validation Timing: From Blur to aria-invalid

I was building a signup form. The moment I focused the email field, an error popped up: “Invalid email format.” I hadn’t typed a single character yet. The password confirmation field was the opposite. I typed the whole password, submitted the form, and only then did it say “Passwords don’t match” — after I’d already finished typing. Then I hit submit, and seven error messages showed up all at once. ...

Published date: 2026-09-15 · Reading time: 19 min · Word count: 4005 words · Author: Isaac

Safari 27 Fixed top-level await — Retested, and Loading Doubled

Safari’s top-level await bug was reported back in July 2022 (WebKit bug 242740), and by October 2025 it had gotten bad enough that top-level await dropped to “Limited” on Baseline (the cross-browser support signal for web platform features). The fix merged in April 2026, shipped starting with Safari Technology Preview 243 in May, and on September 2 the WebKit team posted the postmortem: Fixing top-level await in Safari. ...

Published date: 2026-09-03 · Reading time: 12 min · Word count: 2555 words · Author: Isaac

?? vs ||: Why Your Zero Keeps Disappearing

Running a quiz service, we got a complaint one day: “I just took the test — why does it say ‘No score’?” We checked. Their score was zero. The database clearly stored 0, the API returned 0 faithfully. The culprit was a single line in the UI code. javascript Read line numbers: OFF Line-number reading help Reading line numbers aloud This button is for screen reader users. ...

Published date: 2026-07-14 · Updated 2026-07-17 · Reading time: 9 min · Word count: 1835 words · Author: Isaac

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 Read line numbers: OFF Line-number reading help Reading line numbers aloud This button is for screen reader users. ...

Published date: 2026-04-08 · Updated 2026-07-17 · Reading time: 7 min · Word count: 1487 words · Author: Isaac

Function Declarations vs Expressions: Hoisting Explained

At some point while writing JavaScript, you’ll end up with code like this: javascript Read line numbers: OFF Line-number reading help Reading line numbers aloud This button is for screen reader users. ...

Published date: 2026-04-04 · Reading time: 11 min · Word count: 2197 words · Author: Isaac

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: 9 min · Word count: 4166 words · Author: Isaac

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: 10 min · Word count: 4900 words · Author: Isaac

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

맨 위로