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

洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social

1,081 following1,893 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

@hongminhee@hollo.social

It wasn't just me…!? 😂

https://masto.ai/@jimp/113929711296870655

masto.ai

Jim P. (@jimp@masto.ai)

Attached: 1 image Welcome to Febarray #February #Comic #falseknees

@jimp@masto.ai

Welcome to Febarray

Four panel comic by falseknees (Comic by @falseknees@mastodon.social ) copyright 2020:

Panel 1:
A downy woodpecker is resting on a pine tree branch partially covered in snow. Its beak is open with a tiny bit of breath condensation coming out. A speech bubble above its head reads "Ahh... Febuary".

Panel 2:
Close up of the bird's head with a speech bubble: "Febrary"

Panel 3:
The bird's head is tilted down and it looks a bit confused, speech bubble says: "Febberary..."

Panel 4:
The bird's head is raised more confidently, mouth open wider, now saying: "Frebrury"
ALT text

Four panel comic by falseknees (Comic by @falseknees@mastodon.social ) copyright 2020: Panel 1: A downy woodpecker is resting on a pine tree branch partially covered in snow. Its beak is open with a tiny bit of breath condensation coming out. A speech bubble above its head reads "Ahh... Febuary". Panel 2: Close up of the bird's head with a speech bubble: "Febrary" Panel 3: The bird's head is tilted down and it looks a bit confused, speech bubble says: "Febberary..." Panel 4: The bird's head is raised more confidently, mouth open wider, now saying: "Frebrury"

@jimp@masto.ai

Welcome to Febarray

Four panel comic by falseknees (Comic by @falseknees@mastodon.social ) copyright 2020:

Panel 1:
A downy woodpecker is resting on a pine tree branch partially covered in snow. Its beak is open with a tiny bit of breath condensation coming out. A speech bubble above its head reads "Ahh... Febuary".

Panel 2:
Close up of the bird's head with a speech bubble: "Febrary"

Panel 3:
The bird's head is tilted down and it looks a bit confused, speech bubble says: "Febberary..."

Panel 4:
The bird's head is raised more confidently, mouth open wider, now saying: "Frebrury"
ALT text

Four panel comic by falseknees (Comic by @falseknees@mastodon.social ) copyright 2020: Panel 1: A downy woodpecker is resting on a pine tree branch partially covered in snow. Its beak is open with a tiny bit of breath condensation coming out. A speech bubble above its head reads "Ahh... Febuary". Panel 2: Close up of the bird's head with a speech bubble: "Febrary" Panel 3: The bird's head is tilted down and it looks a bit confused, speech bubble says: "Febberary..." Panel 4: The bird's head is raised more confidently, mouth open wider, now saying: "Frebrury"

@grishka@mastodon.social · Reply to Andy Piper

@andypiper oh I wish I was able to come and talk about the history of VKontakte and how that led to me starting Smithereen. Russia is one of the few countries where Meta genuinely failed to take over the majority of social media usage, and VK took a lot longer to become terminally enshittified.

That and I'd also talk about how I'm extending ActivityPub too much. And that I have some ideas about decentralized global search.

Maybe next year...

@hongminhee@hollo.social · Reply to @reiver ⊼ (Charles) :batman:

@reiver @evan Yeah, that's actually the issue I'm very considering… and I think we probably should speak multiple languages and offer some real-time AI translators (which unexpectedly worked well at @fossforall last year)?

And, there are also many other issues which are very East Asian!

misskey.io

yasu (@yas)

@hongminhee@hollo.social What should be the official language? Not all developers are proficient in English. How will we support those who struggle with presentations or question sessions in languages other than their native tongue? Since many developers—particularly Japanese speakers—prefer not to use their real names or appear in public, should we allow remote participation, voice-only contributions, or presentations using avatars like VRChat or VTubers? There's also a risk of faceless participants appearing in photos or videos during developer interactions, potentially leading to privacy issues. RE: So one of my dreams is to organize an ActivityPub/fediverse conference for East Asia, as I told about it multiple times before…

@yas@misskey.io · Reply to 洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social What should be the official language?
Not all developers are proficient in English. How will we support those who struggle with presentations or question sessions in languages other than their native tongue?

Since many developers—particularly Japanese speakers—prefer not to use their real names or appear in public, should we allow remote participation, voice-only contributions, or presentations using avatars like VRChat or VTubers?
There's also a risk of faceless participants appearing in photos or videos during developer interactions, potentially leading to privacy issues.

@yas@misskey.io · Reply to 洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social What should be the official language?
Not all developers are proficient in English. How will we support those who struggle with presentations or question sessions in languages other than their native tongue?

Since many developers—particularly Japanese speakers—prefer not to use their real names or appear in public, should we allow remote participation, voice-only contributions, or presentations using avatars like VRChat or VTubers?
There's also a risk of faceless participants appearing in photos or videos during developer interactions, potentially leading to privacy issues.

@hongminhee@hollo.social · Reply to yasu

@yas Yeah, these are all very East Asian problems and indeed real issues! At @fossforall last year in Korea, we'd spoken Korean or English and some real-time AI translators (which unexpectedly worked well) were offered too.

Presentations using virtual avatars sound really interesting. Definitely should be allowed for much broader speakers (especially who're common in Misskey)!

@kodingwarrior@hackers.pub

I had thought about this, but I am not sure how to handle paid RSVP. Monetization matters. We can consider attaching external link, but, I think it is not complete solution

These are ideal and fit into my mental model.

https://event-us.kr/ (korean), https://connpass.com/ (japanese)

But I don't know how to complete implement paid RSVP for fediverse. That's bottleneck

hollo.social

Wasn't aware of [FEP-8a8e] (A …

Wasn't aware of [FEP-8a8e] (A common approach to using the Event object type)! [FEP-8a8e]: https://w3id.org/fep/8a8e

@evan@cosocial.ca

We have to go back

A client to server protocol, or "Social API"
This protocol permits a client to act on behalf of a user. For example, this protocol is used by a mobile phone application to interact with a social stream of the user's actor.
ALT text

A client to server protocol, or "Social API" This protocol permits a client to act on behalf of a user. For example, this protocol is used by a mobile phone application to interact with a social stream of the user's actor.

A client to server protocol, or "Social API"
This protocol permits a client to act on behalf of a user. For example, this protocol is used by a mobile phone application to interact with a social stream of the user's actor.
ALT text

A client to server protocol, or "Social API" This protocol permits a client to act on behalf of a user. For example, this protocol is used by a mobile phone application to interact with a social stream of the user's actor.

Thanks all for listening to my talk about at 2026 today! Here's my deck for the talk: Fedify: Building ActivityPub servers without the pain.

hongminhee.codeberg.page

Fedify: Building ActivityPub servers without the pain - Slidev

"Implementing ActivityPub looks simple at first—it's just JSON over HTTP,\nright? Then you hit JSON-LD context resolution. Then HTTP Signature\nverification fails on Mastodon but works on Misskey. Then you realize\nthe spec spans hundreds of pages across W3C documents and [FEPs] (Fediverse\nEnhancement Proposals), and every implementation interprets them differently.\n\nI went through this pain building [Hollo], a single-user microblogging server.\nHalfway through, I realized I was building a framework instead of an app.\nSo I extracted that framework and called it Fedify.\n\n[Fedify] is an opinionated ActivityPub framework for TypeScript. It handles\nthe protocol plumbing so you can focus on your application logic.\n\nIn this talk, I'll cover:\n\n - *Type-safe vocabulary:* The Activity Vocabulary spec is loosely defined,\n but Fedify maps it to strict TypeScript types. Your IDE knows that\n `Note.content` is a `LanguageString`, and calling\n `await create.getActor()` returns an `Actor` object.\n No more guessing at property shapes.\n\n - *Comprehensive signature support:* Fedify implements four authentication\n mechanisms—HTTP Signatures (draft-cavage), HTTP Message Signatures (RFC\n 9421), Linked Data Signatures, and Object Integrity Proofs (FEP-8b32).\n For HTTP Signatures, it uses [double-knocking]: trying RFC 9421 first,\n falling back to draft-cavage if rejected, and remembering the preference.\n This kind of interoperability work is exactly what you shouldn't have to\n do yourself.\n\n - *Framework-agnostic design:* Fedify works as middleware for Hono, Express,\n Fastify, Next.js, or any framework that speaks `Request`/`Response`.\n Bring your own database, ORM, and auth—Fedify only needs a key–value store\n for caching.\n\n - *CLI toolchain:* The `fedify inbox` command spins up an ephemeral server\n to receive and inspect activities. `fedify lookup` fetches any ActivityPub\n object by URL or fediverse handle—including from servers that require\n [authorized fetch]. No need to create throwaway accounts on production\n instances.\n\nI'll also share production stories: [Ghost chose Fedify] for federating their\npublishing platform rather than implementing the protocol themselves. Hollo\ndemonstrates single-user microblogging with full Mastodon API compatibility.\n[Hackers' Pub] shows how a developer community can integrate with\nthe fediverse.\n\nWhether you're building a new federated service or adding ActivityPub to\nan existing app, this talk will show you how Fedify turns months of protocol\nwrangling into days of actual development.\n\n[FEPs]: https://w3id.org/fep/\n[Hollo]: https://docs.hollo.social/\n[Fedify]: https://fedify.dev/\n[double-knocking]: https://swicg.github.io/activitypub-http-signature/#how-to-upgrade-supported-versions\n[authorized fetch]: https://swicg.github.io/activitypub-http-signature/#authorized-fetch\n[Ghost chose Fedify]: https://activitypub.ghost.org/day-4/\n[Hackers' Pub]: https://hackers.pub/\n"