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

According to @tchambersTim Chambers's My 2026 Open Social Web Predictions:

Fedify will power the federation layer for at least one mid-sized social platform (500K+ users) that adds ActivityPub support in 2026. The “build vs. buy” calculation for federation shifts decisively toward “just use Fedify.”

We're honored by this recognition and will keep working hard to make adoption easier for everyone. Thank you, Tim!

0
0
0

Here's a API design challenge I'm working on: adding async support to (CLI argument parser) without breaking the existing sync API.

The tricky part is combinators—when you compose parsers with object() or or(), the combined parser should automatically become async if any child parser is async, but stay sync if all children are sync. This “mode propagation” needs to work at both type level and runtime.

I've prototyped two approaches and documented findings. If you've tackled similar dual-mode API designs, I'd love to hear how you approached it.

https://github.com/dahlia/optique/issues/52

2
3
1

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

스마일 PRO 라식 수술 후기

자손킴 @jasonkim@hackers.pub

오랫동안 안경 생활에 익숙해져 시력 교정의 필요성을 느끼지 못하던 저자가 스쿠버 다이빙 중 겪은 불편함을 계기로 스마일PRO(SMILE Pro) 수술을 결심하고 진행한 상세한 과정을 다룹니다. 정밀 검사를 통해 각막 두께와 안압의 정상 상태를 확인하고, 노안(presbyopia) 발생 가능성을 고려하여 교정 시력을 미세하게 조정하는 상담 과정을 거쳤습니다. 수술 과정에서 레이저 조사(laser irradiation) 시 초록색 불빛에 시선을 고정하는 기술적 고충과 개인별 안구 각도에 따른 정렬 최적화의 중요성을 생생하게 묘사합니다. 수술 직후 발생하는 일시적인 눈시림과 이물감을 극복하며 시력이 점진적으로 회복되는 단계별 변화를 기록하고 있으며, 철저한 사후 관리와 안약 투여의 필요성을 강조합니다. 이 글은 시력 교정술을 고민하는 이들에게 수술 당일의 긴장감 넘치는 진행 과정과 실제 회복 단계에서 얻을 수 있는 구체적인 인사이트를 제공하며 안경 없는 새로운 삶의 가치를 전달합니다.

Read more →
2
5
1

NextJS 처음 써보는데, 챗봇 UI처럼 인터액티브한 웹앱을 만들때 도움이 되는 부분이 뭔지를 모르겠다. 처음엔 SPA + API 서버 만드는것과 비교해, 자명한 데이터 바인딩 보일러플레이트를 줄여줄거라 생각했다. 근데, 순수 SSR로 처리할 수 없는, 클라에서 상태를 업데이트하는 약간만 복잡한 플로우에서도 전혀 도움이 안된다.

2
4
1

Claude Code에 네이티브 LSP 지원 기능 추가
------------------------------
- 터미널에서 실행되는 *AI 기반 코딩 도구* 인
Claude Code 가 최신버전에서 *LSP (Language Server Protocol) 도구* 를 추가
- 이를 통해 *정의로 이동(go-to-definition)* , *참조 찾기(find references)* , *호버 시 문서 표시* 같은 *IDE 수준의 코드 인텔리전스 기능* 제공
-
/terminal-setup 명…
------------------------------
https://news.hada.io/topic?id=25269&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

2
3
6
6
2
3

그동안 Nix 쓰면서 고통도 많이 받았는데 그래도 주변에 꾸준히 Nix를 권한다. Nix가 '빌드'라는 소프트웨어 개발의 아주 일반적인 문제를 한방에 푸는 방법론이기 때문이다. 물론 아직 몇가지 문제가 좀 있지만(잘 안된다, 불편하다 식의 단순한 문제는 아니다), 나 자신도 그 해결책을 위한 몇가지 아이디어를 가지고 있고, 머지않은 미래에 풀릴거라 생각한다.

UNIX 철학이 작은 기능을 확실하게 수행하는 프로그램들을 만들어 조합하자인데, ls, cat, grep 등이 그 예시다. 내가 볼땐 Nix도 생각도 거기에 해당된다. Nix도 좋은 의미로 의외로 꽤 작다.

5
2

Optique 문서를 보다가 argument ordering 파트에서 프로퍼티가 나타난(? appear) 순서대로 파서가 동작(? consume)한다고 되어 있어서 Object 타입인데 이게 작성한 순서대로 Object.entries() 같은 곳에서 순회되기를 기대할 수 있나 의문이 들었다(Object가 Map같은 거라고 생각했어서).

아래와 같이 타고 가면:

  1. 20.1.2.5 Object.entries ( O ) (User call)
  2. 7.3.23 EnumerableOwnProperties ( O, kind ) (called by 2. Let entryList be ? EnumerableOwnProperties(obj, key+value).
  3. 10.1.11 [[OwnPropertyKeys]] ( ) (called by 1. Let ownKeys be ? O.[[OwnPropertyKeys]]().)
  4. 10.1.11.1 OrdinaryOwnPropertyKeys ( O ) (called by 1. Return OrdinaryOwnPropertyKeys(O).)

아래와 같은 대목을 만나는데:

  1. Let keys be a new empty List.
  2. For each own property key P of O such that P is an array index, in ascending numeric index order, do
    1. Append P to keys.
  3. For each own property key P of O such that P is a String and P is not an array index, in ascending chronological order of property creation, do
    1. Append P to keys.
  4. For each own property key P of O such that P is a Symbol, in ascending chronological order of property creation, do
    1. Append P to keys.
  5. Return keys.

만약 key가 array index가 아닌 문자열 혹은 Symbol이라면 프로퍼티 생성 발생의 오름차순 순서(? ascending chronological order of property creation)대로 순회(?)해야한다고 적혀있다.

아마.. 잘 못 찾아서 못 본 걸수도 있지만 chronological이나 creation 같이 검색했을때 스펙에서 이를 다루는 방법을 정의하지는 않는 것 같았다. 예를 들어, PropertyDescriptor이 auto increment 되는 고유 ID를 갖고 있어야 하고 이를 통해 정렬해야한다, 거나?

실제 구현을 보고 싶어서 GitHub에 있는 V8 미러로 가서 보니 key들을 OrderedHashSet으로 갖고 있는 듯 했다. 생각해보니 그러면 되네, 싶어서 더는 안 찾아봤다.

암튼 Optique 문서대로 생성 순서대로 동작할 것 같다!

3
7

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

미소녀 보려고 미연시를 켰더니 게임 콘솔이 해킹당했어요

Helloyunho @helloyunho@hackers.pub

Ren'Py 기반 PlayStation(플레이스테이션) 게임에서 발생하는 취약점을 이용한 익스플로잇 도구인 yarpe(Yet Another Ren'Py PlayStation Exploit)의 개발 과정과 기술적 원리를 다룹니다. 이 프로젝트는 Python(파이썬)의 Pickle(피클) 라이브러리가 역직렬화 과정에서 임의의 코드를 실행할 수 있다는 보안 결함을 활용하며, 세이브 파일 내부의 데이터를 조작하여 게임 엔진의 제어권을 획득합니다. 저자는 메모리 권한 제한을 우회하기 위해 ROP(Return Oriented Programming) 기법과 unsafe-python을 도입하여 직접적인 메모리 접근 및 스택 포인터 조작을 구현했습니다. 특히 Xbox(엑스박스)에서의 성공적인 초기 실험을 바탕으로 PlayStation 5의 실행 전용 메모리(XOM)와 같은 까다로운 보안 제약 사항을 극복하고 최종적으로 코드를 실행하는 과정을 상세히 설명합니다. 이 글은 복잡한 하드웨어 보안 환경 속에서도 논리적인 분석과 창의적인 접근을 통해 시스템의 한계를 시험하는 과정을 보여주며, 임베디드 보안과 리버스 엔지니어링에 관심 있는 독자들에게 깊이 있는 기술적 통찰을 제공합니다.

Read more →
6

tauri로 패스워드 툴 만드는 이유, 레거시 프로덕트의 지속 여부를 결정할 때 llm을 어찌 썼는지, claude skill 활용 방법, 오라클 클라우드 쓰면 왜 좋은가, 개발자가 개발을 좋아하냐, 좋아 해야만 하냐, 개발자의 ethic 등... 2025년 라스트 개발 밋업이 알차네요.

4
0
3

어제 해커스펍 송년회를 잘 다녀왔습니다. 이동하는 버스 안에서 제 해커스펍 주소를 QR 코드로 열심히 만들었는데, 막상 공유할 용기는 없어서 못 했네요 ㅋㅋ

전날까지도 갈까 말까 고민을 많이 했었는데, 부담감을 이기고 다녀오길 정말 잘했다는 생각이 들었습니다. 라이트닝 토크도 하나같이 유익했어요.

저는 클로드 코드는 아직 써보지 않았는데 (토큰이 살살 녹는다는 얘기를 들어서요 ㅋ ), 이야기를 듣다 보니 요즘 대세는 확실히 클로드 코드인가 싶더라고요. 이제 써볼까 생각만 하고 있었는데, 어제 라이트닝 토크 발표를 듣고 나니 “바로 시작해봐야겠다”는 생각이 들었습니다. 🐱‍💧

6
3
2
6
7
1

https://github.com/makachanm/knife

개인적으로 진행하는 풀스택 프로젝트로써 단순한 싱글-유저 액티비티펍 블로그 플랫폼인 Knife를 제작중이다. 직접 이 플랫폼으로 글을 가끔 끼적이면서 조금씩 개선시킬 생각이다.

2

제 지인 분이 GitHub 에서 인종차별적 코멘트를 받으셨습니다. GitHub 계정이 있으시면 신고 부탁드립니다. 영어가 어려우시더라도 LLM으로 신고글 써달라고 하면 잘 써줍니다. 신고는 단 시간 내에 많이 찍혀야 실제 보고로 올라가기 때문에 가능하신 분들은 꼭 신고 부탁드립니다.

4
0
0
11
11

오늘 Hackers' Public @ Seoul 송년회에서 "개발자는 개발을 좋아해야 하는가? 에 대한 고찰"로 라이트닝 토크를 진행했습니다. 사실 제가 발표자인줄도 모르고 앞에서 이야기를 진행하게 되었는데, 많은 분께서 호응해주시고 또 경험에서 우러나온 진솔한 의견을 내주셔서 다양한 이야기가 오갈 수 있었습니다. 모두 감사드리며, 내년에 모두 원하시는 바 이루기를 기원하겠습니다. 🥰

8

Just had someone leave feedback on my F/OSS project saying “maybe that's fine if a product is focused on your Chinese community.”

I'm Korean. Every single piece of documentation is in English. There's nothing in Chinese anywhere in the project.

This kind of microaggression is exhausting. As a non-white maintainer, you deal with these assumptions constantly—people who feel entitled to your labor while casually othering you based on your name.

It chips away at your motivation. It makes you wonder why you bother.

https://github.com/dahlia/optique/issues/59#issuecomment-3678606022

0
14
1
5
0
0

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

Subagent는 Tool Use입니다.

자손킴 @jasonkim@hackers.pub

Subagent는 Tool Use 메커니즘을 확장하여 특정 작업에 최적화된 독립적인 AI 에이전트를 운용하는 고도화된 방식입니다. 메인 에이전트가 'Task' 도구를 호출하면 전용 시스템 프롬프트와 제한된 도구 세트를 가진 새로운 메시지 루프가 생성되며, 각 Subagent는 자신의 독립적인 컨텍스트 내에서 전문화된 작업을 수행한 뒤 그 결과를 메인 에이전트에게 전달합니다. YAML 설정과 마크다운 본문으로 정의되는 Subagent는 탐색이나 설계 등 목적에 따라 가벼운 모델인 Haiku나 강력한 성능의 Opus를 취사선택할 수 있어 작업의 효율성을 극대화하며, 메인 대화의 컨텍스트가 불필요한 정보로 오염되는 것을 방지합니다. 비록 메인 대화 히스토리를 직접 공유하지는 않지만 CLAUDE.md와 같은 프로젝트 컨벤션을 자동으로 참조하여 일관성을 유지하며 복잡한 워크플로우를 자율적으로 해결합니다. 이러한 구조는 단순한 API 호출을 넘어 LLM이 또 다른 전문 LLM을 도구처럼 활용함으로써 AI 에이전트의 문제 해결 능력을 다각화하고 시스템의 확장성을 한 단계 높여주는 핵심적인 설계 패턴입니다.

Read more →
3
1
1

@hongminhee洪 民憙 (Hong Minhee) Vercel AI SDK에서 제가 문제점이라고 느낀 디자인을 그대로 갖고 있네요. 사실 저도 아직 충분히 고민해보진 못했고 반대 의견은 매우 환영입니다.

제가 문제라고 느낀 부분은 Message 타입 밑에 Part가 있는 건데요. 그러니까 LLM의 응답이 플랫하게 Message[]이 아니라 Message[].Part[]가 됩니다. Part는 Plain Text거나 Tool Call일 수 있습니다. 그런데 이게 메시지를 DB에 저장하고 Streaming UI를 만들때 불편합니다. 그냥 Part를 없애고 Message만 있으면 좋겠어요.

처음에 저런식의 디자인을 한 동기를 추측해보자면, Message[]를 User/Assitant/User/Assistant/... 이렇게 번갈아 나타나는 형태를 기대하고, 그걸 만족시키려면 Assistant/Assitant 이렇게 연달아 나타나는걸 피해야하니 Part를 도입한게 아닌가 싶습니다. 근데 실제론 저 번갈아 나타나야한다는 조건이 타입으로 강제도 안되고(이건 어려우니 OK) 런타임에서 뭐라고 하지도 않아요. 그리고 실제 사용에서 연달아 나타나는걸 허용하는게 오히려 자연스럽습니다.

그래서 처음에 잠깐 잘못 생각해서 나온 디자인이, 실제론 의도한 제약을 주고있지도 못하고 그냥 쓰임만 불편하게 만들고 있는거 같습니다.

2

보안 업데이트: Hollo 0.6.19 릴리스

Fedify의 HTML 파싱 코드에서 발견된 보안 취약점을 수정한 Hollo 0.6.19를 릴리스했습니다.

이 취약점(CVE-2025-68475)은 ReDoS(정규 표현식 서비스 거부) 문제로, 공격자가 연합 작업 중 특수하게 조작된 HTML 응답을 보내 서비스 장애를 유발할 수 있습니다. 악성 페이로드는 작지만(약 170바이트), Node.js 이벤트 루프를 장시간 차단할 수 있습니다.

모든 Hollo 운영자분들께 즉시 버전 0.6.19로 업그레이드하실 것을 강력히 권고드립니다.

항목 상세
CVE CVE-2025-68475
심각도 높음 (CVSS 7.5)
조치 Hollo 0.6.19로 업그레이드

セキュリティアップデート: Hollo 0.6.19 リリース

FedifyのHTMLパースコードにおけるセキュリティ脆弱性に対応したHollo 0.6.19をリリースしました。

この脆弱性 (CVE-2025-68475) は ReDoS (正規表現によるサービス拒否) の問題であり、攻撃者がフェデレーション操作中に特別に細工されたHTMLレスポンスを送信することで、サービス停止を引き起こす可能性があります。悪意のあるペイロードは小さい (約170バイト) ですが、Node.jsのイベントループを長時間ブロックする可能性があります。

すべてのHollo運営者の皆様には、直ちにバージョン 0.6.19 へのアップグレードを強くお勧めします。

項目 詳細
CVE CVE-2025-68475
深刻度 高 (CVSS 7.5)
対応 Hollo 0.6.19 にアップグレード

1

Security Update: Hollo 0.6.19 Released

We have released Hollo 0.6.19 to address a security vulnerability in Fedify's HTML parsing code.

This vulnerability (CVE-2025-68475) is a ReDoS (Regular Expression Denial of Service) issue that could allow an attacker to cause service unavailability by sending specially crafted HTML responses during federation operations. The malicious payload is small (approximately 170 bytes) but can block the Node.js event loop for extended periods.

We strongly recommend all Hollo operators upgrade to version 0.6.19 immediately.

Field Details
CVE CVE-2025-68475
Severity High (CVSS 7.5)
Action Upgrade to Hollo 0.6.19

보안 업데이트: Hollo 0.6.19 릴리스

Fedify의 HTML 파싱 코드에서 발견된 보안 취약점을 수정한 Hollo 0.6.19를 릴리스했습니다.

이 취약점(CVE-2025-68475)은 ReDoS(정규 표현식 서비스 거부) 문제로, 공격자가 연합 작업 중 특수하게 조작된 HTML 응답을 보내 서비스 장애를 유발할 수 있습니다. 악성 페이로드는 작지만(약 170바이트), Node.js 이벤트 루프를 장시간 차단할 수 있습니다.

모든 Hollo 운영자분들께 즉시 버전 0.6.19로 업그레이드하실 것을 강력히 권고드립니다.

항목 상세
CVE CVE-2025-68475
심각도 높음 (CVSS 7.5)
조치 Hollo 0.6.19로 업그레이드

1
1
3

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

도커로 구축한 랩에서 혼자 실습하며 배우는 네트워크 프로토콜 입문 #5-1 TLS

자손킴 @jasonkim@hackers.pub

OSI 7계층 모델의 상위 계층이 현대 TCP/IP 모델에서 애플리케이션 계층으로 통합된 배경과 함께 네트워크 보안의 핵심인 TLS 프로토콜의 작동 원리를 깊이 있게 다룹니다. 도청, 변조, 스푸핑과 같은 보안 위협을 방어하기 위해 TLS가 사용하는 암호화, 해싱, 디지털 인증서 기술을 상세히 살펴보고, 특히 최신 표준인 TLS 1.3에서 성능과 보안성을 극대화한 X25519 키 교환과 Ed25519 디지털 서명 알고리즘의 메커니즘을 분석합니다. 대칭키 암호화의 키 전달 문제를 해결하는 과정부터 전방 비밀성(Forward Secrecy)의 중요성, 그리고 메시지 인증 코드(MAC)를 통한 데이터 무결성 보장까지 현대 암호학 기술이 어떻게 조화를 이루어 안전한 통신 채널을 구축하는지 명확하게 설명합니다. 이 글은 복잡한 보안 프로토콜의 내부 구조를 이해하고 더 안전한 애플리케이션을 설계하려는 개발자에게 실질적인 기술적 통찰을 제공합니다.

Read more →
6