Profile img

Hi, I'm who's behind Fedify, Hollo, BotKit, and this website, Hackers' Pub! My main account is at @hongminhee洪 民憙 (Hong Minhee) :nonbinary:.

Fedify, Hollo, BotKit, 그리고 보고 계신 이 사이트 Hackers' Pub을 만들고 있습니다. 제 메인 계정은: @hongminhee洪 民憙 (Hong Minhee) :nonbinary:.

FedifyHolloBotKit、そしてこのサイト、Hackers' Pubを作っています。私のメインアカウントは「@hongminhee洪 民憙 (Hong Minhee) :nonbinary:」に。

Website
hongminhee.org
GitHub
@dahlia
Hollo
@hongminhee@hollo.social
DEV
@hongminhee
velog
@hongminhee
Qiita
@hongminhee
Zenn
@hongminhee
Matrix
@hongminhee:matrix.org
X
@hongminhee

Logging in Node.js (or Deno or Bun or edge functions) in 2026

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub

Effective logging is the difference between a quick fix and a 2 AM production nightmare, yet traditional JavaScript tools often swing between the fragile simplicity of console.log and the heavy overhead of complex frameworks. LogTape emerges as a zero-dependency alternative that works seamlessly across Node.js, Deno, Bun, and edge functions, addressing the inherent limitations of standard console methods by introducing hierarchical categories, sophisticated filtering, and structured logging. By utilizing sinks, developers can route logs to multiple destinations—such as rotating files, Sentry, or OpenTelemetry—simultaneously while maintaining machine-readable JSON formats. One of its standout features is the support for implicit contexts via AsyncLocalStorage, which allows for seamless request tracing across asynchronous boundaries without the need for manual identifier passing. Furthermore, its library-first design ensures that package authors can include diagnostic logging without imposing unsolicited output or configuration burdens on their users. The system also accommodates production-critical needs like non-blocking I/O for high-performance environments and automated sensitive data redaction. Adopting this structured approach to logging provides the necessary visibility to debug complex systems efficiently while maintaining a lightweight and modern development workflow.

Read more →
2
3
0
2

洪 民憙 (Hong Minhee) shared the below article:

`X-Frame-Options` 의 악몽에서 깨어나세요, 프록시 서버 개발기

소피아 @async3619@hackers.pub

`X-Frame-Options` 헤더로 인해 발생하는 웹 사이트 임베딩 제한을 프록시 서버 개발을 통해 해결하는 과정을 다룹니다. 저자는 실시간 영상 스트리밍 방식의 지연 시간 문제를 극복하기 위해 `iframe`을 활용한 직접 임베딩 방식을 선택했으며, 이 과정에서 마주한 다양한 기술적 난제를 해결해 나갑니다. 단순히 응답 헤더를 제거하는 수준을 넘어, 상대 경로 문제를 해결하기 위한 URL 구조 재설계와 React 및 Vue와 같은 단일 페이지 애플리케이션(SPA)의 라우팅 시스템을 속이기 위한 고난도의 JavaScript 후킹 기법을 소개합니다. 특히 Babel을 이용해 소스코드를 추상 구문 트리(AST)로 분석하고 실행 시점에 `window.location` 접근을 가로채는 방식은 브라우저 보안 제약을 창의적으로 우회하는 통찰을 제공합니다. 이 글은 외부 웹 서비스를 자사 서비스에 매끄럽게 통합하려는 개발자들에게 프록시 서버 설계와 JavaScript 내부 동작 원리에 대한 깊이 있는 경험을 공유하며 기술적 돌파구를 제시합니다.

Read more →
4

Sending emails in Node.js, Deno, and Bun in 2026: a practical guide

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub

Sending emails in JavaScript remains a fragmented task, particularly when navigating the diverse requirements of Node.js, Deno, Bun, and edge environments. This guide explores Upyo, a cross-runtime email library that addresses these challenges through a unified, type-safe API designed for zero dependencies and provider independence. The library simplifies the transition between traditional SMTP and modern providers like Resend, SendGrid, Mailgun, or Amazon SES, ensuring that application logic remains consistent regardless of the underlying transport. Key technical insights include implementing DKIM signatures to boost deliverability, managing resources efficiently with modern JavaScript cleanup patterns, and leveraging bulk-sending optimizations for large-scale notifications. Additionally, the content examines strategies for achieving high availability through provider failover pools and integrating observability with OpenTelemetry for production monitoring. Whether you are building on standard servers or restricted edge functions, Upyo provides the architectural flexibility needed to handle complex email workflows with minimal overhead. Adopting a standardized, runtime-agnostic library for email communication significantly reduces technical debt and ensures your application remains resilient across the modern web stack.

Read more →
2

洪 民憙 (Hong Minhee) shared the below article:

2025 Q4 Review

Jaeyeol Lee @kodingwarrior@hackers.pub

이번 분기 회고는 예상치 못한 기회와 성장을 통해 삶의 궤적이 변화한 과정을 생생하게 담고 있습니다. 저자는 오픈소스 소프트웨어 아카데미(OSSCA) 활동과 웹 브라우저를 밑바닥부터 구현하는 스터디, 그리고 VIMRC 2025 행사 주최 등 왕성한 대외 활동을 이어오며 기술적 내실을 다졌습니다. 특히 구직 과정에서 미국 스타트업의 실무 테스트(Work trial)를 거쳐 정식 멤버로 합류하게 된 경험은 이 글의 핵심적인 전환점입니다. Python과 FastAPI, React 기술 스택을 활용하며 AI 도구를 적극적으로 도입한 업무 환경에서 얻은 인사이트와 전 직장 대비 대폭 향상된 처우 등 구체적인 성과를 공유합니다. 나아가 향후 해외 컨퍼런스 참여와 Python 생태계 기여, 그리고 비즈니스 가치를 창출하는 엔지니어로의 도약이라는 원대한 목표를 제시합니다. 이 글은 꾸준한 기술적 탐구와 커뮤니티 활동이 어떻게 실제적인 커리어 성장과 글로벌 기회로 연결될 수 있는지를 보여주는 귀중한 기록입니다.

Read more →
14

strcpy도 사용 금지
------------------------------
- cURL 프로젝트가 기존에
strncpy()를 제거한 데 이어, 이제 *strcpy()도 코드베이스에서 완전히 금지* 함
-
strcpy()는 API가 단순하지만 *버퍼 크기 검증이 분리될 위험* 이 있어, 장기 유지보수 시 안전하지 않음
- 이를 대신해 *
curlx_strcopy()* 라는 새 함수가 도입되어, 대상 버퍼 크기와 문자열 …
------------------------------
https://news.hada.io/topic?id=25474&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

2

2026년 병오년 새해를 맞아 식탁보 1.16.0 버전을 출시했습니다. 이번 버전에서는 폴더 마운트 기능, 그리고 백그라운드 비동기 다운로드를 구현하여 이전보다 최대 30~40% 이상 빨라진 환경 구축 속도를 달성했습니다.

코딩 AI 어시스턴트의 도움을 받아 계속해서 빠른 출시와 적극적인 기능 반영을 이어 나가도록 하겠습니다. 많은 공유와 후원을 계속 부탁드리겠습니다!

https://github.com/yourtablecloth/TableCloth/releases/tag/v1.16.0

5
5
3

VCS와 패키지 매니저가 통합되어야 한단 얘기를 했었는데, shadcn의 인기가 그런 방향에 대한 지지를 간접적으로 보여주고 있다. shadcn은 UI 라이브러리를 만들어봤자 어차피 고쳐쓰는 경우가 많아서 나왔다. 문제는 기존의 npm 패키지 같은 것들은 받는건 쉬운데 그다음에 고치는게 열불터지는 것이다.

  1. 조건에 맞는 소스 코드를 받는 것 2. 그걸 고치는 것, 에서 패키지 매니저는 1은 잘하는데 2를 불편하게 만든다. VCS는 1을 할수있는데, 약간 번거롭게 되어있고(git submodule을 생각해보라), 2는 당연히 쉽다. VCS에서 1을 개선해야한다.
4

오늘은 고등학교 때 만들다 말았던 라이브러리를 얼추 마무리 지었다. Claude랑 같이 스펙 문서 만들고, 이를 바탕으로 작업하도록 했다. 당시에 하라는 FAT 덤프 파싱은 안 하고 Python에서 편하게 파싱하고 싶어서 만들기 시작했던 라이브러리고 취업하게 되서 이후로 안 봤었는데, Claude Code 덕분에 이제는 보내줄(?) 수 있을 것 같다.

근데 당시에 파서 콤비네이터를 몰랐어서 그랬고 지금은 파서 콤비네이터를 쓸 것 같다. 그리고 오늘 작업하면서 보게 된 건데 비슷한(?) 느낌으로 construct[1] 라는 라이브러리의 존재도 알게 되었다.

이제 Python을 잘 안 쓰고, 원래 시작점이었던 포렌식도 안 하니까 쓸 일은 없겠지만 그래도 당시 2019년 Hacktoberfest 시기에 필드 추가 기여도 받아보고 좋은 기억의 라이브러리였다.

https://github.com/moreal/pystructs/


  1. https://github.com/construct/construct ↩︎

5

@jLEE Jaeyoung OpenCode가 특별히 Claude Code보다 좋은 점은 아직 크게 못 느낀 것 같아요. 아, LSP를 지원하다는 것 정도…? 근데 Claude Code도 최근에 LSP 지원이 들어왔다고 듣긴 해서 (LSP를 쓴다는 느낌을 받은 적은 없지만요), 이 부분은 좀 애매하네요. 다만 OpenCode가 오픈 소스인데다 확장성이 좋아서 그 부분을 기대하고 있어요. 아, 그리고 세션 중간에 모델(아예 다른 업체의 모델로도)을 바꿀 수 있는 것도 좋은 것 같습니다.

0
2
0

평소에는 거의 Claude Code만 쓰는데, 오늘은 일부러 OpenCode를 써봤다. OpenCode에서 Claude 4.5 Opus도 써 보고, Gemini 3 Pro도 써 보고, GPT-5.2도 써 봤다. 일단 “말귀”를 잘 알아 듣는다는 점에서는 Claude 4.5 Opus와 GPT-5.2가 괜찮았던 것 같고, Gemini 3 Pro는 여러 측면에서 내 기대와는 좀 다르게 돌아갔던 것 같다. 그리고 문서 작업을 시켜보면 알 수 있는데, Gemini 3 Pro는 글을 상대적으로 못 쓴다. 이래저래 Gemini 3 Pro는 앞으로도 안 쓰게 될 듯.

OpenCode 자체는 잘 만들었다고 느꼈다. Claude Max 플랜을 그대로 쓸 수 있어서, 당분간 Claude Code 대신 메인 에이전트로 사용해 볼 예정.

5

今年の10月から地域の市民向けシビックテック講座に参加してるのですが、そこでたまたま挙がったテーマが個人的にとても良く、だんだん魅了されています。
ちなみにテーマはを消滅危機言語である沖縄語(沖縄方言)を残したい」で、中学生の頃になりたかった言語学者の夢を大変久々に思い出したのでした。
講座修了後も継続して取り組みたいなと思い始めたので、その気持ちに従って図書館通いの日々が始まりました。
言語を扱うので、LLMを調べたり弄ったりする機会もできて、なんだか毎日楽しいよ。

3
0
3

Karpathy의 프로그래밍 관련 발언: "이렇게까지 뒤처진 느낌은 처음이다"
------------------------------
- Andrej Karpathy가 현재의 프로그래밍 환경에서 *자신이 크게 뒤처지고 있다고* 강하게 느낀다고 밝힘
- 프로그래머가 직접 작성하는 코드 비중은 줄어들고, 이미 존재하는 도구와 시스템을 *어떻게 연결하고 조합하느냐* 가 핵심 역량으로 이동 중
- 지난 1년간 등장한 도구들을 제대로 엮기만 해도 *생산성이…
------------------------------
https://news.hada.io/topic?id=25434&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

1

Unity의 Mono 문제: 왜 당신의 C# 코드는 기대보다 느리게 실행되는가
------------------------------
- Unity가 사용하는 *Mono 런타임* 은 최신 .NET 대비 현저히 느린 실행 속도를 보이며, 동일한 C# 코드가 *최대 15배까지* 차이 나는 사례가 있음
- 실제 게임 코드에서 *Mono 기반 Unity 실행은 100초* , 동일 코드의 .NET 실행은 *38초* 로 측정되어, 디버깅과 테스트 효율에도 큰 영향을 줌
- *Release 모드…
------------------------------
https://news.hada.io/topic?id=25421&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

1

洪 民憙 (Hong Minhee) shared the below article:

ActivityPub 서버에서 YouTube 추적 링크 방지하기

고남현 @gnh1201@hackers.pub

ActivityPub 서버에서 공유되는 YouTube 링크는 추적 파라미터와 내장된 기술로 인해 사용자의 개인정보를 위협할 수 있습니다. ActivityPub 프로토콜 차원의 해결을 기다리기보다, 서버 관리자가 DNT-YT, Piped, Invidious와 같은 개인정보 보호 중심의 대체 프론트엔드(front-end)를 활용해 직접적인 해결책을 마련하는 것이 실질적입니다. 특히 Nginx의 sub_filter 기능을 적용하면 기존 YouTube URL을 대체 주소로 투명하게 재작성하여 사용자가 의도치 않게 추적 시스템에 노출되는 것을 차단합니다. 이러한 서버 측 조치는 연합 네트워크(fediverse) 환경에서 사용자 데이터 보호를 강화하고 프라이버시를 중시하는 커뮤니티 가치를 실현하는 데 중요한 통찰을 제공합니다.

Read more →
5

BGE-M3, MarkItDown, 그리고 마크다운 구조 파서를 이용해 시맨틱 청킹을 수행하고, 그 결과를 Parquet 파일에 저장하는 aipack 프레임워크의 첫 버전을 릴리스합니다. 모델과 데이터베이스에 종속되지 않는 중립적 상태를 유지하여 언제든 재사용할 수 있는 파일 포맷을 기반으로 RAG를 구현하고, MCP 서버까지 구동할 수 있도록 설계했습니다.

aipack의 지향점은 NPU나 GPU에 의존하지 않는 RAG를 구현함과 동시에, 향후 다양한 RAG 구조로 확장하기 용이한 환경을 만드는 데 방점이 찍혀 있습니다. "고품질의 Parquet 파일을 만들어낼 수 있다면 무엇이든 할 수 있다"는 전제 아래, 업계에서 흔히 쓰이는 RAG 파이프라인을 디커플링(Decoupling)해본 실험적 프로젝트입니다.

프로젝트에 대한 피드백과 후기, 평가를 공유해 주시면 감사하겠습니다. 또한, 지속 가능한 오픈소스 활동을 위해 후원을 더해 주신다면 큰 힘이 됩니다.

GitHub: https://github.com/rkttu/aipack

3
4
1

Upyo 만들 때도 상당히 바이브 코딩 농도가 높았는데, 지금 만들고 있는 LLM 기반 번역 라이브러리는 그보다도 더 바이크 코딩 농도를 높여서 작업하고 있다. 초기 세팅 및 인터페이스 선언 외에는 내가 직접 짠 코드가 거의 없을 정도. 그래도 어떻게든 돌아가는 게 만들어지는 걸 보니 LLM 성능도 많이 좋아진 것 같다. (코딩 에이전트들의 노하우도 깊어진 것도 한몫 하겠지만.)

@aburkaaburka 🫣 You're judging before you've tried, and that's the disservice. You're assuming your skills will dull if you use an agent, and you're treating that assumption as a conclusion. That's the mistake. Try it first. See what actually happens. Then adjust your thinking based on experience, not fear.

I'm using them for months now, and in no way is it dulling my skills. I haven't learned as much as a programmer in years personally.

2

If you are a programmer and an AI hold-out, and you have some time off during Christmas: gift yourself a 100 USD subscription to Claude Code and … try it. But really try it. Take a week if you can afford it and dive in. It will change your opinion on these tools.

1
1

洪 民憙 (Hong Minhee) shared the below article:

Terraform & Kubernetes 도입 후기 (그리고 AI의 도움)

Juntai Park @arkjun@hackers.pub

최근 인프라 구축에 Terraform과 Kubernetes를 도입하며 얻은 실질적인 운영 경험과 통찰을 다룹니다. Terraform을 통한 코드 기반의 인프라 관리(Infrastructure as Code)는 변경 이력 추적과 재사용성을 높여 휴먼 에러를 대폭 줄여주었으며, Kubernetes는 자동화된 배포와 셀프 힐링 기능을 통해 운영 부담을 체감될 정도로 낮추어 주었습니다. 특히 AI를 설계와 디버깅의 보조 도구로 활용해 복잡한 기술적 러닝 커브를 효과적으로 극복한 과정이 인상적입니다. 서비스 규모에 따른 적절한 도구 선택과 도입 시점에 대한 현실적인 조언은 인프라 현대화를 고민하는 이들에게 실무적인 가이드라인을 제공합니다.

Read more →
3

식탁보 1.15.0 버전을 출시했습니다. 1년여만의 대규모 업데이트로, .NET 10 적용과 함께 커뮤니티에서 불편 사항으로 여겨졌던 Windows Sandbox의 vGPU 기본 사용 문제, 언어 표시 문제, 그리고 인스톨러 간소화 등 성능과 기능 간소화는 물론, 코드의 분량을 대폭 간소화했습니다.

추후 TableCloth3 프로젝트에서 개발 중인 Avalonia 기반 프론트엔드로 쉽게 전환할 수 있도록 땅 다지기 작업도 같이 진행해두었고 계속 업데이트해나갈 예정입니다. 그리고 이번 업데이트부터 ARM64 빌드도 정식으로 제공됩니다.

꾸준한 관심과 성원에 늘 감사드립니다.

https://forum.dotnetdev.kr/t/1-15-0/14191

10
0
0

Upyo 만들 때도 상당히 바이브 코딩 농도가 높았는데, 지금 만들고 있는 LLM 기반 번역 라이브러리는 그보다도 더 바이크 코딩 농도를 높여서 작업하고 있다. 초기 세팅 및 인터페이스 선언 외에는 내가 직접 짠 코드가 거의 없을 정도. 그래도 어떻게든 돌아가는 게 만들어지는 걸 보니 LLM 성능도 많이 좋아진 것 같다. (코딩 에이전트들의 노하우도 깊어진 것도 한몫 하겠지만.)

8
1

witr 지원

❯ witr ghostty
Target      : ghostty

Process     : ghostty (pid 36529)
User        : mck
Service     : launch job demand
Command     : /Applications/Ghostty.app/Contents/MacOS/ghostty
Started     : just now (Mon 2025-12-29 10:08:55 +00:00)

Why It Exists :
  launchd (pid 1) → ghostty (pid 36529)

Source      : application.com.mitchellh.ghostty.34914134.34914139 (launchd)
              Type : Launch Agent

Working Dir : /
Open Files  : 100 of 256 (39%)
Locks       : /Users/mck/Library/Caches/com.mitchellh.ghostty/sentry/8c48f586-5c27-49c8-71a1-7727494394fc.run.lock

Warnings    :
  • Process is running from a suspicious working directory: /
  • Service name and process name do not match
1

최근 보안의 화두는 제로트러스트지만, 정작 가장 민감한 공동인증서 파일은 여전히 NPKI라는 고전적인 디렉터리 구조 속에 노출되어 있습니다.

OS 수준의 암호화 기술인 BitLocker나 VBS의 이점을 전혀 활용하지 못하는 현 상황을 개선해보고자, Windows 인증서 저장소를 백엔드로 활용하는 방식을 고민 중입니다. macOS의 Keychain 시스템처럼 인증서를 시스템 보안 영역 내부로 끌어들임으로써, 파일 탈취 위험을 획기적으로 낮추는 것이 목표입니다.

인프라 자체를 바꿀 순 없어도, 엔드포인트 단에서 '방어의 밀도'를 높이는 유의미한 시도가 될 것 같습니다. :-D

https://forum.dotnetdev.kr/t/npki/14187

4
3
7
1
0
1

asdf + direnv 조합을 mise로 바꾸고 나서, 초반에는 환경 변수 제어가 쉽고 다양한 점이 좋았다면 시간이 갈수록 tasks 기능이 기존 프로젝트까지 mise로 전환하게 만든다.

[tasks."dev:db"]
dir = "./data"
run = "./docker-run-postgres.sh --no-tty"

[tasks."dev:cms"]
dir = "./cms"
run = """
until nc -z localhost 5432; do
  echo "Waiting for database to be ready..."
  sleep 1
done
corepack yarn dev || [ $? -eq 129 ] || [ $? -eq 130 ]
"""

[tasks.dev]
depends = ["dev:db", "dev:cms"]
1
2
2

I'm working on a new JavaScript/TypeScript library for natural language translation powered by LLMs. I want a name that feels elegant, memorable, and reflects the essence of translation.

I've narrowed it down to four candidates from different linguistic roots. Which one do you think fits bets?

  • Xindaya (信達雅): Derived from Yan Fu (嚴復)'s Three Pillars of Translationfaithfulness (信), expressiveness (達), and elegance (雅).

  • Vertana (वर्तन): Means transformation, turning, or process. It evokes the fluid and sacred process of transforming meaning from one language to another.

  • Glosso (γλῶσσα): The root for tongue or language. It's the origin of terms like glosssary and polyglot.

  • Fanyi (飜譯): The direct and minimal term for translation. It's punchy and honors the long-standing tradition of translation in East Asia.

0
0

GLM-4.7의 성능이 그렇게나 좋다고 들어서 요금제를 보니 상당히 파격적인 가격이라 조금 시도해 봤다. 우선 LogTape에 있던 이슈 하나를 수행하게 했고, 혹시 몰라서 Claude Code에서 Claude 4.5 Opus로 PLAN.md 계획 파일을 꽤 꼼꼼하게 만들게 한 뒤, 그걸 참고하게 했다. 그럼에도 불구하고:

  • 모든 export되는 API에 대해서는 JSDoc 주석을 써야 한다는 당연한 절차를 수행하지 않음 (코드베이스의 다른 코드는 다 그렇게 되어 있는데도 눈치가 없음)
  • JSDoc 주석을 쓰랬더니 Python docstring 스타일로 정의부 “안쪽”에 주석을 씀…
  • Deno.env 같은 특정 런타임에 의존적인 API를 씀 (코드베이스의 다른 코드는 그런 API 안 쓰고 있음)
  • 아주 기본적인 JavaScript 구문 오류를 냄 (예를 들면 세미콜론 빼먹는 식의) → 이것 때문에 상당히 토큰 소모를 많이 함
  • 한국어가 살짝 귀여움 (“나옵니다”가 아니라 “나옴니다”라고 쓰는 식)
  • 결국에는 JavaScript 구문 오류를 못 고쳐서 테스트 스위트도 아예 못 돌리는데 전체 작업이 완료되었다고 스스로 결론 내림

소문난 잔치에 먹을 게 없다더니, 역시나 벤치마크만 보고 모델을 골라서는 안 되겠다는 교훈만 재확인 한 것 같다.

8
1