洪 民憙 (Hong Minhee) :nonbinary:'s avatar

洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social

1,107 following1,898 followers

An intersectionalist, feminist, and socialist living in Seoul (UTC+09:00). @tokolovesme's spouse. Who's behind @fedify, @hollo, and @botkit. Write some free software in , , , & . They/them.

서울에 사는 交叉女性主義者이자 社會主義者. 金剛兔(@tokolovesme)의 配偶者. @fedify, @hollo, @botkit 메인테이너. , , , 等으로 自由 소프트웨어 만듦.

()

Pinned

@hongminhee@hollo.social

Hello! I'm Hong Minhee (洪 民憙), an open source software engineer in my late 30s, living in Seoul, Korea. I'm bisexual and non-binary (they/them), and an enthusiastic advocate of free/open source software and the fediverse.

I work full-time on @fedify, an ActivityPub server framework in TypeScript, funded by @sovtechfund. I'm also the creator of @hollo, a single-user ActivityPub microblog; @botkit, an ActivityPub bot framework; Hackers' Pub, a fediverse platform for software developers; and LogTape, a logging library for JavaScript and TypeScript.

I have a long interest in East Asian languages (CJK) and Unicode. I post mostly in English here, though occasionally in Japanese or in mixed-script Korean (國漢文混用體), a traditional writing style that interleaves Chinese characters with the native Korean alphabet. Wanting to write in that style was actually one of the reasons I joined the fediverse. Feel free to talk to me in English, Korean, Japanese, or even Literary Chinese!

en.wikipedia.org

Korean mixed script - Wikipedia

Pinned

はじめまして!ソウル在住の30代後半のオープンソースソフトウェアエンジニア、洪 民憙ホン・ミンヒと申します。バイセクシュアル(bisexual)・ノンバイナリー(non-binary)で、自由・オープンソースソフトウェア(F/OSS)とフェディバース(fediverse)の熱烈な支持者です。

STF(@sovtechfund)の支援を受け、TypeScript用ActivityPubサーバーフレームワーク「@fedify」の開発に専念しています。他にも、おひとり様向けのActivityPubマイクロブログ「@hollo」、ActivityPubボットフレームワーク「@botkit」、ソフトウェア開発者向けフェディバースプラットフォームHackers' Pub、JavaScript・TypeScript用ロギングライブラリLogTapeなどの制作者でもあります。

東アジア言語(いわゆるCJK)とUnicodeにも興味があります。このアカウントでは主に英語で投稿していますが、時々日本語や国漢文混用体(漢字ハングル混じり文)の韓国語でも書いています。実はこの文体で書きたくてフェディバースを始めた、という経緯もあります。日本語、英語、韓国語、漢文でも気軽に話しかけてください!

speakerdeck.com

国漢文混用体からHolloまで

本発表では、韓国語の「国漢文混用体」(漢字ハングル混じり文)を自分のフェディバース投稿に実装したいという小さな目標から始まった旅路を共有します。 この目標を達成するために、ActivityPubのJSON-LDの複雑さやHTTP Signatures、WebFingerなどの仕様を理解する必要性に…

Pinned

安寧(안녕)하세요! 저는 서울에 살고 있는 30() 後半(후반)의 오픈 소스 소프트웨어 엔지니어 洪民憙(홍민희)입니다. 兩性愛者(양성애자)(bisexual)이자 논바이너리(non-binary)이며, 自由(자유)·오픈 소스 소프트웨어(F/OSS)와 聯合宇宙(연합우주)(fediverse)의 熱烈(열렬)支持者(지지자)이기도 합니다.

STF(@sovtechfund)의 支援(지원)을 받아 TypeScript() ActivityPub 서버 프레임워크 @fedify 開發(개발)專業(전업)으로 ()하고 있습니다. 그 ()에도 싱글 유저() ActivityPub 마이크로블로그 @hollo, ActivityPub 봇 프레임워크 @botkit, 소프트웨어 開發者(개발자)를 위한 聯合宇宙(연합우주) 플랫폼 Hackers' Pub, JavaScript·TypeScript() 로깅 라이브러리 LogTape ()製作者(제작자)이기도 합니다.

()아시아 言語(언어)(이른바 CJK)와 Unicode에도 關心(관심)이 많습니다. 이 計定(계정)에서는 ()英語(영어)로 포스팅하지만, 때때로 日本語(일본어)國漢文混用體(국한문 혼용체) 韓國語(한국어)로도 씁니다. 聯合宇宙(연합우주)에 오게 된 動機(동기) () 하나가 바로 國漢文混用體(국한문 혼용체)로 글을 쓰고 싶었기 때문이기도 하고요. 韓國語(한국어), 英語(영어), 日本語(일본어), 아니면 漢文(한문)으로도 말을 걸어주세요!

logtape.org

LogTape

Unobtrusive logging library with zero dependencies—library-first design for Deno, Node.js, Bun, browsers, and edge functions

@index@activitypub.ghost.org

It's finally here!

Ghost 6.0 is the biggest update we've ever made — and it includes federated publishing for everyone, with ActivityPub ❤️

We also shipped a brand new native analytics sweet, and passed a pretty cool milestone. Independent publishers have now earned over $100M using Ghost.

https://ghost.org/6/

@hongminhee@hackers.pub

서울에서 10–15명 정도 모여서 회의 겸 작업할 만한 공간 어디 없을까요? 토즈를 이용해 볼까 했는데 8시간 정도 예약하려면 너무 비싸더라고요.

@DemigirlA@planet.moe

docs.google.com/forms/d/e/1FAI

하남시 "오소리" 유해동물 지정 건의에
대한 반대 시민 청원 캠페인입니다

docs.google.com

하남시 ‘오소리’ 유해동물 지정 건의에 대한 시민 반대의견

하남시의 ‘오소리 유해동물 지정’ 건의를 규탄한다! 환경부는 구시대적 유해동물 관리제도를 전면 재검토하라! – 하남시의 오소리 유해동물 지정 건의에 대한 시민 반대의견 – 1. 유해동물 분류는 생태학적으로 부정확하고 시대착오적이다 자연 생태계에서 모든 종은 서로 긴밀한 상호작용을 통해 역할을 수행한다. 그럼에도 불구하고 특정 종을 ‘유해하다’는 이유로 낙인찍는 것은 철저히 인간 중심적인 시각이다. 오소리는 산림 생태계의 건강을 지키는 ‘생태 공학자(Ecosystem engineer)’로 불릴 만큼 중요한 역할을 한다. 설치류 개체수 조절, 사체 처리에 의한 영양순환 기여, 그리고 굴 파기를 통한 토양 환기 및 생물다양성 증진은 대표적 생태 기능이다. 유해동물의 대표로 거론되는 멧돼지 또한 토양 교란을 통해 종자산포와 생물 다양성 유지에 기여하는 중요한 생태적 역할을 수행한다. 세계적으로는 ‘유해동물’이라는 이분법적 낙인 자체를 지양하는 추세다. 생태계에 문제가 발생한 경우에도 종 전체에 대한 혐오나 박멸이 아닌, 지역적·맥락적 해결(예: 외래종의 보호구역 침입 등)이 원칙이다. 한국 역시 야생동물 관리 정책의 비살상적 전환이라는 최신 흐름을 반영한 정책 전환이 시급하다. 2. ‘유해동물’ 낙인은 야생동물 혐오와 생태 보전에 악영향을 미친다 ‘유해동물’로 지정된 종은 마치 ‘생태계 교란종’ 또는 ‘침입종’처럼 부정적으로 인식되어 야생동물에 대한 혐오와 경시를 부추긴다. 이는 생물다양성 보전 의식 저하로 이어지며, 시민사회와 환경부의 생태보전 노력에 역행하는 조치다. 하남시의 사례 역시 문제의 본질은 오소리가 아니다. 신도시 개발과 골프장 조성으로 인한 서식지 훼손, 인간 활동 영역의 확장으로 오소리와 인간의 공간이 중첩된 결과 발생한 갈등을, 오소리 탓으로 돌리는 것은 책임 전가일 뿐이다. 3. 인위적인 개체수 조절은 비효율적이며 비윤리적이다 현재 한국에서 유해동물 개체수를 사냥으로 조절하는 방식은 현실적 한계에 부딪히고 있다. 포획을 담당하는 엽사들의 고령화와 감소, 총기 규제의 엄격함 속에서 실질적인 개체수 조절은 거의 불가능하다. 무엇보다 야생동물은 고통, 스트레스, 학습 능력을 지닌 존재다. 유해동물 지정은 곧 포획과 사살을 정당화하는 행위이며, 개체 단위의 생명과 고통은 철저히 무시된다. 실제로 하남시가 2023년 포획한 오소리는 포획 과정에서 입은 부상으로 결국 폐사했다. 이는 윤리적으로도 정당화될 수 없는 행위다. 4. 비살상적 공존 방식은 이미 실현 가능한 대안이다 이미 세계 여러 나라에서는 야생동물과의 공존을 위한 비살상적 관리방식을 실천하고 있다. 예컨대, 영국에서는 오소리가 도심에 자주 나타나도 포획·사살보다는 예방과 공존을 중심으로 한 관리가 이루어진다. 시민들에게 오소리 생태 정보를 제공하고, 정원에는 오소리가 땅을 파지 못하도록 매립식 울타리를 설치하며, 발견 시 대응 방법을 안내하는 메뉴얼과 표지판을 보급한다. 이처럼 예방·회피·공존이 충분히 가능한 상황에서도, 생명을 눈앞에서 제거하면 된다는 구시대적 ‘처분’ 프레임을 고수하는 것은 윤리적으로나 정책적으로나 비도덕적이고 시대에 뒤떨어진 태도이다. ✊ 우리의 요구 우리는 하남시의 ‘오소리 유해동물 지정’ 건의를 강력히 규탄하며, 즉각적인 건의 철회를 촉구한다. 환경부 또한 강원도의 건의로 '민물가마우지 유해동물 지정' 사례처럼, 생태학적 고려 없이 지자체의 건의를 그대로 수용하는 실수를 반복하지 말라. ‘유해동물’이라는 낙인은 생태계와 인간 사회의 공존을 가로막는 나쁜 정책이다. 환경부는 시대착오적 야생동물 관리제도를 전면적으로 재검토하라!

TIL: '시조'의 '시'는 '시'가 아니다.

시조는 한국/한국어에서 제법 전통 있는 정형시의 양식이다. 그런데…

## 詩가 아님

시조의 한자 표기는 時調이다. 노래 시(詩)가 아니라 때 시(時).

문헌에는 신광수(1712-1775)의 문집에 時調로 처음 등장, 이후로도 時調로 표기된다.

## 정확한 어원은 모름

시조가 시절가조(時節歌調)의 준말이라고 당당하게 주장하는 사람이 많다. 엉터리다.

첫째, 풀이 자체가 아무 근거가 없다. 時節歌調 자체가 조선 시대에 전혀 문증되지 않는다. 한국고전종합DB 전체를 뒤져도 없다. 수두룩해야 하지 않나? 시조는 당대의 케이팝이었는데?

둘째, 설령 그렇게 풀이할 수 있더라도 그게 '준말'이라는 근거는 전혀 되지 못한다. 예를 들어 '대왕'을 '위대한 제왕'으로 풀이할 수 있다고 해서, '세종대왕'은 '세종위대제왕'의 '준말'이라고 할 수 있는가? 누가 그런 주장을 받아들이겠는가?

진짜 준말이라면 시절가조와 시조를 병기한 예 하나쯤은 있을 것 아닌가? 왜 시절가조 자체가 문헌에 없는가?

있는 건 '시절가' 표기 한 건뿐이다. 정조 때 문인 이학규의 글을 엮은 〈낙하생집〉의 주석 한 줄이다. "시조의 또다른 이름은 시절가."(旹調。亦名旹節歌。) [1] '시절가조'가 아니라 '시절가'다.

심지어 중앙 일간지 기사에서도, 석북집에 나온다며 "시절가조라는 말은 이세춘이 만들었다" 같은 대담한 주장을 한다. [2] 석북은 '시조의 장단을 배열한 것은 이세춘'(一般時調排長短。來自長安李世春。 [3])이라고 했지, 시절가조라는 용어나 시조라는 용어를 창시했다고 한 적이 없다.

결론: 시조는 연원이 불분명하다. 누가 만든 말인지도 모른다. 그러나 많은 사람들에게 오랫동안 사랑받아서 장르가 되었다. 그러니까 멋있는 것임.

[1]
https://db.itkc.or.kr/dir/item?itemId=MO#/dir/node?dataId=ITKC_MO_0604A_0180_010_0010
[2]
https://www.khan.co.kr/article/201407011026461
[3]
https://db.itkc.or.kr/dir/item?itemId=MO#/dir/node?dataId=ITKC_MO_0537A_0110_010_0350

db.itkc.or.kr

한국고전종합DB

speakerdeck.com

BotKit by Fedify:誰でも簡単に作れるActivityPubボット

BotKit by Fedifyの紹介資料です。 BotKitは、ActivityPubボットを簡単に作ることができるTypeScriptフレームワークです。従来のMastodon・Misskey APIを使ったボットとは異なり、ActivityPubを直接実装する独立型ボットを数行のコードで作成…

@Yohei_Zuho@mstdn.y-zu.org

【OSC京都で :fediverse: に関連したセミナーを開催します!】
2025年8月3日(日)の13:00〜 オープンソースカンファレンス京都 で「分散型SNSユーザー有志」として、

「Fediverseのつくりかた 〜開発者・管理者たちの現場から〜」

と題してセミナー講演を行います!
登壇者として私のほか、
:fedibird1: 運営者の @noellabo さん
:fedify: :hollo: 等の開発者である @hongminhee さん
京都のMastodon地域サーバー 管理人の @7_nana さん
をお呼びして開催します。
ActivityPubを中心としたFediverseの今が知れるセミナーです。ぜひご参加ください!

会場:KRP ルーム2B(2階)
日時:2025年8月3日(日)13:00〜
参加費:無料
セミナー詳細:
event.ospn.jp/osc2025-kyoto/se

event.ospn.jp

Fediverseのつくりかた 〜開発者・管理者たちの現場から〜 - セミナープログラム - オープンソースカンファレンス2025 Kyoto

@4sterisk@mi.tomadoi.com

botほしい→なに作るー?→なにも思いつかない​:blobcatpnd_miage:

@kur0den0010@chpk.kur0den.net

misskey.okayurisotto.net

🍚おかゆりぞっと🥢 (@okayurisotto)

Botを動かすためだけにMisskeyやらMastodonを建てるの、オーバースペックな感じがしないでもないので、ActivityPubを直接喋るようなBotを作ってみたい(と思ってから数年が経過している)

@okayurisotto@misskey.okayurisotto.net

Botを動かすためだけにMisskeyやらMastodonを建てるの、オーバースペックな感じがしないでもないので、ActivityPubを直接喋るようなBotを作ってみたい(と思ってから数年が経過している)

@okayurisotto@misskey.okayurisotto.net

Botを動かすためだけにMisskeyやらMastodonを建てるの、オーバースペックな感じがしないでもないので、ActivityPubを直接喋るようなBotを作ってみたい(と思ってから数年が経過している)

@esurio1673@c.koliosky.com

すっごい簡易なAPubデバッグには便利なのよねーBotkit

@kur0den0010@chpk.kur0den.net

サーバーとしてbotを立てるって面白そうだよねえ

@Yohei_Zuho@mstdn.y-zu.org
@Yohei_Zuho@mstdn.y-zu.org

【OSC京都で :fediverse: に関連したセミナーを開催します!】
本日の13:00〜 オープンソースカンファレンス京都 で「分散型SNSユーザー有志」として、

「Fediverseのつくりかた 〜開発者・管理者たちの現場から〜」

と題してセミナー講演を行います!
登壇者として私のほか、
:fedibird1: 運営者の @noellabo さん
:fedify: :hollo: 等の開発者である @hongminhee さん
京都のMastodon地域サーバー 管理人の @7_nana さん
をお呼びして開催します。
ActivityPubを中心としたFediverseの今が知れるセミナーです。ぜひご参加ください!
東海道らぐさんのセミナーのオンラインURLでの同時配信もします!!
tokaidolug.connpass.com/event/

会場:KRP ルーム2B(2階)
日時:2025年8月3日(日)13:00〜
参加費:無料
セミナー詳細:
event.ospn.jp/osc2025-kyoto/se

event.ospn.jp

Fediverseのつくりかた 〜開発者・管理者たちの現場から〜 - セミナープログラム - オープンソースカンファレンス2025 Kyoto

@hongminhee@hollo.social

8月3日(日)にOSC 2025 京都で開催される「Fediverseのつくりかた 〜開発者・管理者たちの現場から〜」セミナーで、「BotKit by Fedify:誰でも簡単に作れるActivityPubボット」というテーマでオンラインにて約10分間発表します。普段からフェディバースボットの制作に興味がある方には、きっと興味深く聞いていただけるのではないかと思います。参加費も無料ですので、ぜひ多くの方のご参加をお待ちしております。

mstdn.y-zu.org

もちもちずきん :teto_zuho: 🍆 (@Yohei_Zuho@mstdn.y-zu.org)

【OSC京都で #Fediverse :fediverse: に関連したセミナーを開催します!】 2025年8月3日(日)の13:00〜 オープンソースカンファレンス京都 #osckyoto で「分散型SNSユーザー有志」として、 「Fediverseのつくりかた 〜開発者・管理者たちの現場から〜」 と題してセミナー講演を行います! 登壇者として私のほか、 #fedibird :fedibird1: 運営者の @noellabo@fedibird.com さん #Fedify :fedify: #Hollo :hollo: 等の開発者である @hongminhee@hollo.social さん 京都のMastodon地域サーバー #マストどす 管理人の @7_nana@mastodos.com さん をお呼びして開催します。 ActivityPubを中心としたFediverseの今が知れるセミナーです。ぜひご参加ください! 会場:KRP ルーム2B(2階) 日時:2025年8月3日(日)13:00〜 参加費:無料 セミナー詳細: https://event.ospn.jp/osc2025-kyoto/session/2211664

@Yohei_Zuho@mstdn.y-zu.org

【OSC京都で :fediverse: に関連したセミナーを開催します!】
2025年8月3日(日)の13:00〜 オープンソースカンファレンス京都 で「分散型SNSユーザー有志」として、

「Fediverseのつくりかた 〜開発者・管理者たちの現場から〜」

と題してセミナー講演を行います!
登壇者として私のほか、
:fedibird1: 運営者の @noellabo さん
:fedify: :hollo: 等の開発者である @hongminhee さん
京都のMastodon地域サーバー 管理人の @7_nana さん
をお呼びして開催します。
ActivityPubを中心としたFediverseの今が知れるセミナーです。ぜひご参加ください!

会場:KRP ルーム2B(2階)
日時:2025年8月3日(日)13:00〜
参加費:無料
セミナー詳細:
event.ospn.jp/osc2025-kyoto/se

event.ospn.jp

Fediverseのつくりかた 〜開発者・管理者たちの現場から〜 - セミナープログラム - オープンソースカンファレンス2025 Kyoto

We're thrilled to highlight five outstanding contributions from the Korean Open Source Contribution Academy () program participants who have been working on ! Their dedication and effort have significantly enhanced our server framework.

First up is @nyeong with his monumental #318 PR, implementing a SQLite-based key–value store to address #274. This contribution adds the SqliteKvStore class with full cross-runtime support for Node.js, Deno, and Bun through the new @fedify/sqlite package. His implementation includes atomic operations, TTL support, comprehensive test coverage, and careful attention to SQL injection prevention. This enables developers to use SQLite as a persistent storage backend while maintaining compatibility with Fedify's existing KvStore API—a crucial feature for production deployments!

Next, @crohasang delivered an excellent quality-of-life improvement with #341 PR, fixing #257. He enhanced the CLI to properly respect TTY status and the NO_COLOR environment variable, implementing intelligent color control across all CLI commands. The solution involved switching from @cliffy/ansi/colors to @std/fmt/colors, creating a helper function using Deno.inspect() to handle object formatting, and ensuring colors are correctly disabled when output is redirected to files. This makes the CLI much more pipe-friendly and suitable for automated workflows!

@menele contributed a thoughtful enhancement with #342 PR, addressing #191. She updated the fedify inbox command to display not just the activity type, but also the type of object contained within each activity—transforming output like "Create" into the more informative "Create(Note)" or "Undo" into "Undo(Follow)". This seemingly simple change required making the display function asynchronous to fetch the enclosed objects, significantly improving the debugging experience for developers!

@woaol tackled an important developer experience issue with #329 PR, solving #306. Previously, the fedify init command would often install outdated versions of Fedify packages like @fedify/redis because version numbers were hardcoded in the CLI. They created a getLatestVersion() function that dynamically retrieves package versions from local metadata files, ensuring that developers always get the latest versions of all Fedify packages when initializing a new project. This improvement includes comprehensive test coverage and eliminates the frustration of starting a project with outdated dependencies!

Finally, @kodingwarrior made a significant contribution with #309 PR, implementing #269—NestJS integration! They created the @fedify/nestjs package with a FedifyModule that seamlessly integrates Fedify into NestJS applications. This includes proper middleware implementation, dependency injection support through NestJS's module system, and compatibility with both CommonJS and ESM environments. This opens up Fedify to the large NestJS developer community, making it easier than ever to build ActivityPub-enabled applications with this popular enterprise framework!

These contributions showcase the incredible talent and dedication of the OSSCA participants. From core infrastructure improvements to developer experience enhancements, each contribution makes Fedify better for the entire community. Thank you all for your hard work and welcome to the Fedify contributor family! 🚀

We're looking forward to seeing more amazing contributions from the OSSCA program and the broader community. If you're interested in contributing to Fedify, check out our GitHub repository and join us in building the future of federated social web! 🌟

github.com

GitHub - fedify-dev/fedify: ActivityPub server framework in TypeScript

ActivityPub server framework in TypeScript. Contribute to fedify-dev/fedify development by creating an account on GitHub.

What is the biggest reason that makes you hesitate to adopt ?

  • ActivityPub protocol seems too complex8 (14%)
  • Not familiar with TypeScript/JavaScript ecosystem13 (23%)
  • Lack of documentation or tutorials6 (11%)
  • Integration with existing systems looks difficult7 (12%)
  • Performance/scalability not proven5 (9%)
  • Security and stability concerns2 (4%)
  • Debugging/testing appears challenging3 (5%)
  • Insufficient community support3 (5%)
  • Too much time required for learning8 (14%)
  • Team/company resistance to adopting new technology2 (4%)