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

洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social

1,107 following1,899 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 · Reply to near

@computersandblues Actually, this question came up when my acquaintance, @kodingwarrior, mentioned wanting to use a fediverse-based event hosting service for an event he's organizing, which is when we started talking about Mobilizon. The main scenario we envisioned was allowing only those who have paid the participation fee to RSVP. And, of course, they would need to be refunded if they cancel.

@kodingwarrior, are there any other requirements besides this?

어떤 ()들을 어필할 수 있을까?

  • 聯合宇宙(연합우주)를 이루는 소프트웨어 自體(자체)大部分(대부분) 오픈 소스이다?
  • 海外(해외)의 많은 오픈 소스 소프트웨어 開發者(개발자)들이 聯合宇宙(연합우주)를 쓰고 있다?

또 뭐가 있을까…?

@hongminhee@hollo.social

早晩間(조만간) 소프트웨어 엔지니어 커뮤니티로서의 聯合宇宙(연합우주)를 어필하는 韓國語(한국어) 글을 하나 써 봐야겠다.

@evan I don't remember exactly, but I think I came across it while doing research before developing Fedify. I probably didn't use it because the TypeScript type definitions were missing. In the end, I ended up making something similar in Fedify anyway.

fedify.dev

Vocabulary | Fedify

The Activity Vocabulary is a collection of type-safe objects that represent the Activity Vocabulary and the vendor-specific extensions. This section explains the key features of the objects.

@hongminhee@hollo.social

I never thought this little rant of mine would be read by so many people. 😲

@hongminhee@hollo.social

I have deeply mixed feelings about 's adoption of JSON-LD, as someone who's spent way too long dealing with it while building .

Part of me wishes it had never happened. A lot of developers jump into ActivityPub development without really understanding JSON-LD, and honestly, can you blame them? The result is a growing number of implementations producing technically invalid JSON-LD. It works, sort of, because everyone's just pattern-matching against what Mastodon does, but it's not correct. And even developers who do take the time to understand JSON-LD often end up hardcoding their documents anyway, because proper JSON-LD processor libraries simply don't exist for many languages. No safety net, no validation, just vibes and hoping you got the @context right. Naturally, mistakes creep in.

But then the other part of me thinks: well, we're stuck with JSON-LD now. There's no going back. So wouldn't it be nice if people actually used it properly? Process the documents, normalize them, do the compaction and expansion dance the way the spec intended. That's what Fedify does.

Here's the part that really gets to me, though. Because Fedify actually processes JSON-LD correctly, it's more likely to break when talking to implementations that produce malformed documents. From the end user's perspective, Fedify looks like the fragile one. “Why can't I follow this person?” Well, because their server is emitting garbage JSON-LD that happens to work with implementations that just treat it as a regular JSON blob. Every time I get one of these bug reports, I feel a certain injustice. Like being the only person in the group project who actually read the assignment.

To be fair, there are real practical reasons why most people don't bother with proper JSON-LD processing. Implementing a full processor is genuinely a lot of work. It leans on the entire Linked Data stack, which is bigger than most people expect going in. And the performance cost isn't trivial either. Fedify uses some tricks to keep things fast, and I'll be honest, that code isn't my proudest work.

Anyway, none of this is going anywhere. Just me grumbling into the void. If you're building an ActivityPub implementation, maybe consider using a JSON-LD processor if one's available for your language. And if you're not going to, at least test your output against implementations that do.

@hongminhee@hollo.social

I have deeply mixed feelings about 's adoption of JSON-LD, as someone who's spent way too long dealing with it while building .

Part of me wishes it had never happened. A lot of developers jump into ActivityPub development without really understanding JSON-LD, and honestly, can you blame them? The result is a growing number of implementations producing technically invalid JSON-LD. It works, sort of, because everyone's just pattern-matching against what Mastodon does, but it's not correct. And even developers who do take the time to understand JSON-LD often end up hardcoding their documents anyway, because proper JSON-LD processor libraries simply don't exist for many languages. No safety net, no validation, just vibes and hoping you got the @context right. Naturally, mistakes creep in.

But then the other part of me thinks: well, we're stuck with JSON-LD now. There's no going back. So wouldn't it be nice if people actually used it properly? Process the documents, normalize them, do the compaction and expansion dance the way the spec intended. That's what Fedify does.

Here's the part that really gets to me, though. Because Fedify actually processes JSON-LD correctly, it's more likely to break when talking to implementations that produce malformed documents. From the end user's perspective, Fedify looks like the fragile one. “Why can't I follow this person?” Well, because their server is emitting garbage JSON-LD that happens to work with implementations that just treat it as a regular JSON blob. Every time I get one of these bug reports, I feel a certain injustice. Like being the only person in the group project who actually read the assignment.

To be fair, there are real practical reasons why most people don't bother with proper JSON-LD processing. Implementing a full processor is genuinely a lot of work. It leans on the entire Linked Data stack, which is bigger than most people expect going in. And the performance cost isn't trivial either. Fedify uses some tricks to keep things fast, and I'll be honest, that code isn't my proudest work.

Anyway, none of this is going anywhere. Just me grumbling into the void. If you're building an ActivityPub implementation, maybe consider using a JSON-LD processor if one's available for your language. And if you're not going to, at least test your output against implementations that do.

apparently Mobilizon 5.2.0 broke JSON-LD stuff for the few AP implementations that care, without any announcement other than ‘bugfix: Replace joinmobilizon.org by mobilizon.org’

A commit that changes the JSON-LD header to include the domain mobilizon. org rather than joinmobilizon.org for the namespace
ALT text

A commit that changes the JSON-LD header to include the domain mobilizon. org rather than joinmobilizon.org for the namespace

@mariusor@metalhead.club · Reply to 洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee it's no biggie - I doubt there's many projects that accept and thread correctly for this corner case - I just like to use this conversation as a test for threading. :D

Btw, I don't know if it's relevant to but I have the logic for threading (based on JWZ's old email threading algorithm) in the ONI project: git.sr.ht/~mariusor/oni/tree/m

@moreal

git.sr.ht

~mariusor/oni (master): src/js/items-threading.js - sourcehut git

@hongminhee@hollo.social

Recently, @moreal built ap-thread-reader, a tool that displays threaded posts on a single page. Works with any ActivityPub platform, not just Mastodon.

Try it at https://ap-thread-reader.fly.dev/.

Built with Fedify and released as open source: https://github.com/moreal/ap-thread-reader.

More details at https://blog.moreal.dev/2026/02/ap-thread-reader-introduction/index.en.html.

blog.moreal.dev

ap-thread-reader, ActivityPub-compatible Thread Reader — 잡다한 블로그

Introduce ap-thread-reader's feature

@hongminhee@hollo.social

올해는 放通大(방통대) 中語中文學科(중어중문학과)志願(지원)했고, 日本語(일본어)英語(영어)發表(발표)志願(지원)했다. (), 올해에는 3() 言語(언어)와 익숙해져야 한다는 뜻이다…

@hongminhee@hollo.social

飛行機(비행기)에서 몇 가지 技術(기술) 팟캐스트를 들으며 느낀 것 하나는… 韓國(한국) 技術(기술) 팟캐스트는 言語(언어)整頓(정돈)되어 있지 못하다는 것. 말투나 發音(발음) 같은 層位(층위)를 얘기하는 게 아니라, 생각 自體(자체)가 뻔하고 그걸 듣고 뭔가 배울 ()稀薄(희박)하달까? 막말로 그냥 여느 職場(직장) 同僚(동료)와의 雜談(잡담)과 크게 다르지 않은 느낌이다. 콘텐츠가 잘 準備(준비)되지 않았다고 봐야 할 지.

@liaizon@wake.st

I came across a user research study by @theverge that has the fediverse listed as the top result for the question "Which of the following online spaces do you feel connected..?"

full 20mb pdf if you want to see more of the report assets.hyper.media/ipfs/bafybe

Which of the following online spaces do you feel connected..? with the fediverse beating out whatsapp and substack
ALT text

Which of the following online spaces do you feel connected..? with the fediverse beating out whatsapp and substack

@hongminhee@hollo.social

그래도 이()에 유럽 다녀오면서 좋았던 것 () 하나는 英語(영어) 會話(회화)()負擔(부담)이 많이 줄었다는 것. 實力(실력)이 는 건 아니지만, 눈치를 훨씬 덜 보게 되었달까? 15() ()美國(미국) 東部(동부)에 갔을 때와 달리 사람들이 나에게 훨씬 親切(친절)했던 것과 關係(관계)가 있는 것 같다.

@hongminhee@hollo.social

One of the reasons our project can't move to a CI/CD service other than GitHub Actions or a forge service other than GitHub is precisely because of npm and JSR's dependency on GitHub. If you want to use trusted publishing for your JavaScript packages on npm or JSR, you are forced to use GitHub and GitHub Actions. This issue is likely not unrelated to the fact that npm and GitHub are operated by the same company.