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

요즘 일할 때 Opus 4.6보다 GPT-5.3 Codex를 애용하고 있지만 그럼에도 나는 Anthropic이 LLM의 alignment나 safety, explainability 분야에서 제일 잘 하고 있는 곳이라고 생각한다.

미국 정부와 관련된 일련의 사건에서 누가 잘잘못을 따지는 것과는 별개로 미국 정부가 저렇게까지 강경하게 나서서 가지지 못하면 부숴버리겠어!!!!!! 같은 스탠스를 취하고 있다는건, 그만큼 Anthropic의 모델이 우수해서가 아닐까.

그러고선 OpenAI가 Anthropic 자리를 대신 들어갔는데 정작 OpenAI도 Anthropic가 제한한걸 그대로 제한하고도 계약을 딴걸 보면 미국 정부가 자기네 정치적 이유로 OpenAI를 밀어줬거나 OpenAI는 미국 정부가 원하는 것을 이루기 위해 뒤에서 제한을 풀어주지 않을까하는 우려가 크다.

1
5
0
0
1
2
0
2
1
4

Claude Code를 사용하다가 마크다운에서 [Link Name](link) 같이 표기하면 Link Name 으로 렌더링 되는 것처럼 클릭 가능한 링크를 보여줘서 이게 뭐지해서 찾아보니 OSC 8[1] 이라는 것이 있다고 한다. 지원하나 해서 찾아보니 Optique의 url()[2] 도 이를 지원한다고 한다.


  1. https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda ↩︎

  2. https://optique.dev/concepts/messages#urls ↩︎

1
1
3

[🍏매장안내]
튜링의 사과 키보드 타건 배치를 변경하였습니다.
브랜드별로 한쪽 공간에 배치하여 체험하실 수 있도록 구비 해놨습니다.

미니 해커톤, 무료 강연등 다양하고 알찬 프로그램 준비해보고자합니다. 언제든지 협업 문의가 있으시다면 연락주세요! 많은 관심 부탁드립니다.

튜링의 사과팀의 2026년 다양한 활동 기대해주세요!😄

1
4

シビックテックで取り組んでる課題をチームの皆で話してて、データはJSON-LDで記述したほうが良さそうとか、いずれシェア機能が欲しいねとか、コンテンツはオープンデータ化を前提としてデータの帰属は市民や地域コミュニティとしたいね等々を話し合う中で、「なんか…ActivityPub感…」と思った。
ActivityPubをオープンデータの流通・蓄積・活用の際に用いている取り組みとかって、あるのかな?
Open GLAMなどでありそうな気もするけど、どうなんだろ。

2

앗! 나도 해커스펍 기여자? Hackers Pub 기여자 모임 스프린트

Hackers' Pub 리뉴얼, 손꼽아 기다리고 계시지 않으신가요? Hackers' Pub, 한 번쯤 직접 기여해 보고 싶다는 생각, 해보신 적 없으신가요? Hackers' Pub, 이용하면서 어딘가 아쉽다 느꼈던 부분, 혹시 있지 않으셨나요? 이번 스프린트 모임은 리뉴얼 진도도 팍팍 빼면서, 기여자들끼리 서로 얼굴도 익히고 친분도 쌓는 자리입니다. 부담 없이 참여해 주세요. 모임은 서울특별시 성동구 상원길 26, 뚝섬역 5번 출구 근처 어딘가에 있는 튜링의 사과에서 진행합니다. 일정은 3월 1일 ~ 3월 2일. 모여서 각자 편하게 해커스펍 기여하다가 가시면 됩니다. 몸만 오시면 됩니다. 비용은 튜링의 사과 이용료만 챙겨 주시면 돼요. 감사합니다. 이 글은 연합우주를 위한 모임 개최 서비스 moim.live의 첫 게시글로 영광스럽게 공유합니다

📅 2026-03-01T02:00:00.000Z — 2026-03-02T10:00:00.000Z

Organized by: @hongminhee@hollo.social

View event details

1
0
1
5
3

One thing I find a bit disappointing is that the Sanitizer API is [Exposed=Window] only, so there's no way to use it server-side in Node.js or Deno. A simple sanitize(html: string): string method would have been enough to retire a whole category of npm packages. The irony is that sanitizing untrusted HTML is arguably more common on the server—that's where you receive user input, store it, and render it back.

For now, server-side JavaScript still has to rely on DOMPurify (dragging jsdom along with it) or something like sanitize-html, each shipping its own HTML parser that may subtly disagree with how browsers actually parse markup—which is exactly the problem this API was supposed to solve.

https://hacks.mozilla.org/2026/02/goodbye-innerhtml-hello-sethtml-stronger-xss-protection-in-firefox-148/

0
0
0
1
0

오늘 동료랑 모노레포 설계에 대해 이야기하다가, 아래의 내용을 근거로 모노레포 설계에 너무 많은 시간을 쓰지말고 그냥 죄다 몰빵하자고 설득했다. 내가 생각하는 올바른 워크플로우를 어차피 도입하지 못할 거고, 그 상황에서 차선책들을 늘어놓고 고민을 하느니 시간이라도 아끼자는 입장이다.

내가 가진 개발에서의 지식/경험/의견은 negative한 형태가 많은것 같다. 어떤 문제에 대한 명쾌한 해결책(positive)보다는, 어떤 문제가 어렵거나 별로 중요하지 않으니 그쪽으로 시간을 쏟지 말아야한다는 사실을 활용하게 되는 경우가 더 잦다.

3

A couple days ago, I got a DM from a user. I happily replied and sent a follow request—but the Accept never came back, even though they hadn't enabled manuallyApprovesFollowers. My DM reply probably never arrived either. Classic interop bug.

I checked out the Bonfire source and dug in. Turns out Bonfire hasn't implemented RFC 9421 yet, so it was silently discarding any activity signed with it. That alone would be workable, except for one more issue: Bonfire was responding 200 OK even when signature verification failed, instead of 401 Unauthorized.

This matters because Fedify implements a double-knocking mechanism—if a request signed with RFC 9421 fails, it retries with the older draft cavage signature. But since Bonfire returned 200 OK on the failed first knock, had no reason to send a second one.

I filed two issues on the Bonfire repo—one requesting RFC 9421 support, and one about returning 401 on invalid signatures. For the latter, I also sent a PR, which got merged pretty quickly: bonfire-networks/activity_pub#9.

That said, individual Bonfire instances won't pick up the fix until they actually deploy it. So in the meantime, I patched Hollo and Hackers' Pub to use draft-cavage-http-signatures-12 as the firstKnock, so Bonfire instances can at least understand the first request.

One last thing: Fedify caches whether a given server supports RFC 9421, and the Bonfire servers I'd already talked to were cached as “supports RFC 9421”—because they'd been returning 200 OK. I had to manually clear that cache on both hollo.social and hackers.pub before everything finally worked.

After all that, the mutual follow went through and my DM reply landed. Worth it.

0
3
0
0

Fedify 2.0.0 is here!

This is the biggest release in Fedify's history. Here are the highlights:

  • Modular architecture — The monolithic @fedify/fedify package has been broken up into focused, independent packages: @fedify/vocab, @fedify/vocab-runtime, @fedify/vocab-tools, @fedify/webfinger, and more. Smaller bundles, cleaner imports, and the ability to extend ActivityPub with custom vocabulary types.
  • Real-time debug dashboard — The new @fedify/debugger package gives you a live dashboard at /__debug__/ showing all your federation traffic: traces, activity details, signature verification, and correlated logs. Just wrap your Federation object and you're done.
  • ActivityPub relay support — First-class relay support via @fedify/relay and the fedify relay CLI command. Supports both Mastodon-style and LitePub-style relay protocols (FEP-ae0c).
  • Ordered message delivery — The new orderingKey option solves the “zombie post” problem where a Delete arrives before its Create. Activities sharing the same key are guaranteed to be delivered in FIFO order.
  • Permanent failure handlingsetOutboxPermanentFailureHandler() lets you react when a remote inbox returns 404 or 410, so you can clean up unreachable followers instead of retrying forever.

Other changes include content negotiation at the middleware level, @fedify/lint for shared linting rules, @fedify/create for quick project scaffolding, CLI config files, native Node.js/Bun CLI support, and many bug fixes.

This release includes significant contributions from Korea's OSSCA participants. Huge thanks to everyone involved!

This is a major release with breaking changes—please check the migration guide before upgrading.

Full release notes: https://github.com/fedify-dev/fedify/discussions/580

@fedifyFedify: ActivityPub server framework
Modular architecture — The monolithic @fedify/fedify package has been broken up into focused, independent packages:
woo! that's excellent news! i had a handful of (not currently maintained or used) libraries i wrote myself (codeberg.org/outpost/ts-libs) because all the alternatives either did too much (fedify before this) or weren't that great (the existing http signature library does not do typescript from what i can tell)

having these building blocks without the opinionated framework on top is a great step in enabling flexibility in system design without making everyone reinvent the wheel and get it wrong, excited to see this!
0

Fedify 2.0.0 is here!

This is the biggest release in Fedify's history. Here are the highlights:

  • Modular architecture — The monolithic @fedify/fedify package has been broken up into focused, independent packages: @fedify/vocab, @fedify/vocab-runtime, @fedify/vocab-tools, @fedify/webfinger, and more. Smaller bundles, cleaner imports, and the ability to extend ActivityPub with custom vocabulary types.
  • Real-time debug dashboard — The new @fedify/debugger package gives you a live dashboard at /__debug__/ showing all your federation traffic: traces, activity details, signature verification, and correlated logs. Just wrap your Federation object and you're done.
  • ActivityPub relay support — First-class relay support via @fedify/relay and the fedify relay CLI command. Supports both Mastodon-style and LitePub-style relay protocols (FEP-ae0c).
  • Ordered message delivery — The new orderingKey option solves the “zombie post” problem where a Delete arrives before its Create. Activities sharing the same key are guaranteed to be delivered in FIFO order.
  • Permanent failure handlingsetOutboxPermanentFailureHandler() lets you react when a remote inbox returns 404 or 410, so you can clean up unreachable followers instead of retrying forever.

Other changes include content negotiation at the middleware level, @fedify/lint for shared linting rules, @fedify/create for quick project scaffolding, CLI config files, native Node.js/Bun CLI support, and many bug fixes.

This release includes significant contributions from Korea's OSSCA participants. Huge thanks to everyone involved!

This is a major release with breaking changes—please check the migration guide before upgrading.

Full release notes: https://github.com/fedify-dev/fedify/discussions/580

Fedify 2.0.0을 릴리스했습니다!

Fedify 역사상 가장 큰 릴리스입니다. 주요 변경 사항을 소개합니다:

  • 모듈형 아키텍처 — 기존의 단일 @fedify/fedify 패키지를 @fedify/vocab, @fedify/vocab-runtime, @fedify/vocab-tools, @fedify/webfinger 등 독립적인 패키지들로 분리했습니다. 번들 크기가 줄어들고, 임포트가 깔끔해지며, 커스텀 어휘 타입으로 ActivityPub을 확장할 수도 있습니다.
  • 실시간 디버그 대시보드 — 새로운 @fedify/debugger 패키지로 /__debug__/ 경로에 라이브 대시보드를 띄울 수 있습니다. 연합 트래픽의 트레이스, 액티비티 상세, 서명 검증, 로그까지 한눈에 확인할 수 있습니다. 기존 Federation 객체를 감싸기만 하면 됩니다.
  • ActivityPub 릴레이 지원@fedify/relay 패키지와 fedify relay CLI 명령어로 릴레이 서버를 바로 띄울 수 있습니다. Mastodon 방식과 LitePub 방식 모두 지원합니다(FEP-ae0c).
  • 순서 보장 메시지 전달 — 새로운 orderingKey 옵션으로 “좀비 포스트” 문제를 해결합니다. DeleteCreate보다 먼저 도착하는 문제가 더 이상 발생하지 않습니다. 같은 키를 공유하는 액티비티는 FIFO 순서가 보장됩니다.
  • 영구 전달 실패 처리setOutboxPermanentFailureHandler()로 원격 인박스가 404나 410을 반환할 때 대응할 수 있습니다. 도달 불가능한 팔로워를 정리하는 등의 처리가 가능합니다.

이 외에도 미들웨어 수준의 콘텐츠 협상, @fedify/lint, @fedify/create, CLI 설정 파일, 네이티브 Node.js/Bun CLI 지원, 다수의 버그 수정 등이 포함되어 있습니다.

이번 릴리스에는 한국 OSSCA (오픈소스 컨트리뷰션 아카데미) 참가자분들의 큰 기여가 담겨 있습니다. 참여해 주신 모든 분께 감사드립니다!

브레이킹 체인지가 포함된 메이저 릴리스입니다. 업그레이드 전에 마이그레이션 가이드를 꼭 확인해 주세요.

전체 릴리스 노트: https://github.com/fedify-dev/fedify/discussions/580

3
0
0

Fedify 2.0.0 is here!

This is the biggest release in Fedify's history. Here are the highlights:

  • Modular architecture — The monolithic @fedify/fedify package has been broken up into focused, independent packages: @fedify/vocab, @fedify/vocab-runtime, @fedify/vocab-tools, @fedify/webfinger, and more. Smaller bundles, cleaner imports, and the ability to extend ActivityPub with custom vocabulary types.
  • Real-time debug dashboard — The new @fedify/debugger package gives you a live dashboard at /__debug__/ showing all your federation traffic: traces, activity details, signature verification, and correlated logs. Just wrap your Federation object and you're done.
  • ActivityPub relay support — First-class relay support via @fedify/relay and the fedify relay CLI command. Supports both Mastodon-style and LitePub-style relay protocols (FEP-ae0c).
  • Ordered message delivery — The new orderingKey option solves the “zombie post” problem where a Delete arrives before its Create. Activities sharing the same key are guaranteed to be delivered in FIFO order.
  • Permanent failure handlingsetOutboxPermanentFailureHandler() lets you react when a remote inbox returns 404 or 410, so you can clean up unreachable followers instead of retrying forever.

Other changes include content negotiation at the middleware level, @fedify/lint for shared linting rules, @fedify/create for quick project scaffolding, CLI config files, native Node.js/Bun CLI support, and many bug fixes.

This release includes significant contributions from Korea's OSSCA participants. Huge thanks to everyone involved!

This is a major release with breaking changes—please check the migration guide before upgrading.

Full release notes: https://github.com/fedify-dev/fedify/discussions/580

4
6
0
2
0
3
1

오래 기다리셨습니다!!!

BlueBase: Python으로 밑바닥부터 직접 만들어보는 DBMS

https://theeluwin.github.io/BlueBase/

결국 완성은 못했지만, 일단 공개할 수 있는 부분이라도 공개합니다.

RedBase DBMS을 구성하는 PF, RM, IX, SM, QL 중 PF와 RM을 여러분들이 직접 구현 할 수 있게, 과제의 형태로 제공합니다.

PF는 paged file의 약자로, file을 page 단위로 관리하는 컴포넌트입니다. 대충 4096 바이트 단위로 관리하는데요, file에 바로바로 read하거나 write하지 않고, 자주 사용되는 page는 가능한 memory에 있도록 중간에 buffer manager를 둡니다. 그렇다면 buffer에 공간이 모자라면? buffer에 있는 page 중 누군가를 evict 할 수밖에 없습니다. 그럼 뭘 기준으로 하면 좋을까요? 이 부분을 잘 생각해서 구현해보고, 성능을 비교해보기 바랍니다. 제가 cache hit/miss 시뮬레이션 구현해둔게 있으니, 제 custom 보다 높은 성능을 달성해주세요!

이후 RM은 record management의 약자인데, PF를 사용해서 record들을 가져오거나, 새로 넣거나 등을 하게 해줍니다. 그렇다면 전체 record를 순회하는 scan 연산이 중요하겠죠. 이 부분을 구현하는 것이 핵심입니다. record는 page 앞 부분에 bitmap을 둬서 slot이 비어있는지 아닌지를 확인하는데, 만약 record 삭제 명령이 마지막 slot을 비우게 된다면 해당 page는 더이상 필요 없겠죠. 그렇지만 이를 바로 free로 만드는건 조금 비싼 연산이 필요합니다. free page list를 다시 계산해야하거든요. 그래서 보통 DBMS에서는 이러한 작업들을 vacuum 연산으로 해결합니다. 추가로, 지금은 고정 길이 record만 다룰 수 있습니다만, 가변 길이를 허용하려면 어떻게 해야할까요? 이 부분들은 자유롭게 구현해보시면 좋겠습니다.

문서와 테스트는 모두 공개되어있습니다. 기여해주시면 감사하겠습니다! 다만, 정답 코드와 핵심 로직은 마지막까지 저 혼자 해보고 싶습니다 (도전).

https://github.com/theeluwin/BlueBase

밑바닥부터 직접 만들어보는 DBMS에서 page cache policy에 따른 성능 비교.
5

현재 Hackers' Pub을 이용해 주시고 계신 여러분들은 간접적으로 Fedify의 현장 테스트에 도움을 주고 계십니다. 🤣

8

https://github.com/anxrch/hypewriter/releases/tag/v0.1.0

자신감을 갖고... Hypewriter 0.1.0을 릴리즈했습니다.
취미로 글을 쓰시는 분들(속칭 글러)을 위한 프로그램 개발을 목표로 하고 있습니다.

현재 pdf, docx, txt로 내보내기를 지원하며([그림 2] 참조)
그 외에도
글자수세기, 타자기 모드, 마크다운 문법 일부 지원, 다양한 구분선 및 인용 스타일 등을 지원합니다.

아직까진 부족함이 많지만... 잘 부탁드립니다.

4
0
0

Amp가 〈코딩 에이전트는 죽었다〉는 제목의 글을 올려서, 난 또 무슨 엄청나게 획기적이고 그 누구도 상상도 못 한 차세대의 혁신적인 에이전트를 선보인다는 줄 알고 설레며 읽어봤는데, 그냥 에디터/IDE 확장은 없애겠다는 공지였다… 누가 그런 공지를 이렇게 거창한 제목으로 해요.

1
1
1
2
22
1
1
1
1
0

개인적으로 LLM이 웹 브라우저나 C 컴파일러같은 거대한 코드를 (제대로 된 물건인가를 떠나서) 컴파일이 가능한 수준까지 만들어낸 것만 해도 상당한 기술적 성과라고는 생각한다. LLM이 거대한 코드베이스를 빌드시킬 수 있을 정도까지 프로그래밍 언어의 형식적인 측면은 정복했다는 얘기기 때문이다.

다만 짜증나는 것은 AI 회사들이 이 성과를 엄청나게 과장하면서 PR stunt를 돌리고 있는 것과 (여기서 AI 회사들의 조급함이 엿보인다) 별 영양가도 없는 앞으로개발자다뒤졌다 내러티브에 땔감을 넣고 있다는 것이다.

3

아직 배포는 못 했는데 개밥먹기 싸이클(?) 한 번 돌아본 것 같다. Slidev 버그(?) 디버깅 하는데 시간을 좀 썼고.. 나중에 진짜 발표할 일 생기면 쓰면서 개밥먹기 더 해봐야지.

2
1