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

洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social

1,093 following1,903 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 silverpill

@silverpill Mostly because ap: is a very broad scheme name.

If ap: becomes the long-term ActivityPub portable identifier scheme, that is fine, and Fedify should support it. The concern is that FEP-ef61 is still a draft, and making a library emit ap: as the canonical form today can make the current draft semantics look more settled, and more general, than they are.

ap+ef61: has a narrower meaning: this is the portable-object URI model defined by FEP-ef61. That gives implementations room to experiment with the current DID authority, gateway dereferencing, compatible ID, and proof-policy rules without implicitly claiming the whole ap: scheme for this exact design. It also avoids a possible future conflict if ap: is later standardized with slightly different semantics.

This is not a strong objection to ap: itself. Fedify should accept ap: because the current FEP requires it, and interoperability with existing implementations matters more than a local naming preference. My current thinking is:

  • accept both ap: and ap+ef61:;
  • canonicalize them through the same comparison algorithm;
  • emit ap+ef61: for newly generated portable IDs while the FEP is still draft, unless the FEP settles on ap: or another scheme;
  • keep this easy to change if the FEP chooses ap:, ap+portable:, ap+nomad:, or something else.

Between the alternatives, ap+ef61: is precise but tied to the FEP number. ap+portable: or ap+nomad: would be better if the goal is a stable human-readable scheme name. I do not have a strong preference there.

The main point is that a draft-specific or portable-specific scheme feels safer than treating the generic ap: scheme as permanently settled before the FEP reaches consensus.

@hongminhee@hollo.social

Fedify 프로젝트에 權祉源(권지원) 님(@z9mb1)과 李璨行(이찬행) 님(@2chanhaeng) 두 분께서 새 메인테이너로 合流(합류)하셨습니다! :fedify: 🎉 ㊗

Two new maintainers join Fedify: Chanhaeng Lee and Jiwon Kwon

Chanhaeng Lee (@2chanhaeng) and Jiwon Kwon (@z9mb1) are now co-maintainers of Fedify. They have already been doing maintainer-shaped work for much of the past year, so this is mostly making the repository match reality.

Chanhaeng has done a lot of the package-boundary work in Fedify. The most visible piece was splitting the old @fedify/fedify/x/* modules into standalone packages: @fedify/cfworkers, @fedify/denokv, @fedify/hono, and @fedify/sveltekit. They then separated the Activity Vocabulary layer itself into @fedify/vocab, @fedify/vocab-runtime, and @fedify/vocab-tools, making it possible to build custom vocabulary extensions without touching the federation core. They built @fedify/next and @fedify/nuxt from scratch, contributed to @fedify/solidstart, and added Nuxt support to fedify init. @fedify/sqlite gained SqliteMessageQueue: a queue backend that only needs SQLite, handy for single-node deployments and local development. Chanhaeng also implemented the fedify webfinger CLI command, fediverse handle utilities (parseFediverseHandle(), isFediverseHandle(), toAcctUrl()), and the @fedify/webfinger and @fedify/lint packages. They are currently working on a custom background task API built around defineTask().

Jiwon has spent much of the past year making the CLI and relay tooling more useful for real ActivityPub debugging. fedify relay, backed by @fedify/relay, spins up a local ephemeral ActivityPub relay server with Mastodon and LitePub support. They extended fedify lookup with multi-URL traversal and inline image rendering for compatible terminal emulators (Kitty, WezTerm, iTerm, and others), and added configuration file support so options can live in ~/.config/fedify/config.toml or a project-local .fedify.toml rather than being passed on every invocation. They also fixed a race condition in RedisMessageQueue, corrected ActivityPub object handling for relative URLs, extended TypeScript types for RFC 6570 URI Template expressions in dispatcher paths, and implemented the FEP-5711 inverse collection properties, including likesOf, repliesOf, and followersOf.

Chanhaeng and Jiwon both came to Fedify through OSSCA 2025, Korea's Open Source Contribution Academy. I'm grateful that the program led to long-term maintainers, not just a few merged patches, and I'm looking forward to working with them in this new role.

w3id.org

Cookie monster!

Two new maintainers join Fedify: Chanhaeng Lee and Jiwon Kwon

Chanhaeng Lee (@2chanhaeng) and Jiwon Kwon (@z9mb1) are now co-maintainers of Fedify. They have already been doing maintainer-shaped work for much of the past year, so this is mostly making the repository match reality.

Chanhaeng has done a lot of the package-boundary work in Fedify. The most visible piece was splitting the old @fedify/fedify/x/* modules into standalone packages: @fedify/cfworkers, @fedify/denokv, @fedify/hono, and @fedify/sveltekit. They then separated the Activity Vocabulary layer itself into @fedify/vocab, @fedify/vocab-runtime, and @fedify/vocab-tools, making it possible to build custom vocabulary extensions without touching the federation core. They built @fedify/next and @fedify/nuxt from scratch, contributed to @fedify/solidstart, and added Nuxt support to fedify init. @fedify/sqlite gained SqliteMessageQueue: a queue backend that only needs SQLite, handy for single-node deployments and local development. Chanhaeng also implemented the fedify webfinger CLI command, fediverse handle utilities (parseFediverseHandle(), isFediverseHandle(), toAcctUrl()), and the @fedify/webfinger and @fedify/lint packages. They are currently working on a custom background task API built around defineTask().

Jiwon has spent much of the past year making the CLI and relay tooling more useful for real ActivityPub debugging. fedify relay, backed by @fedify/relay, spins up a local ephemeral ActivityPub relay server with Mastodon and LitePub support. They extended fedify lookup with multi-URL traversal and inline image rendering for compatible terminal emulators (Kitty, WezTerm, iTerm, and others), and added configuration file support so options can live in ~/.config/fedify/config.toml or a project-local .fedify.toml rather than being passed on every invocation. They also fixed a race condition in RedisMessageQueue, corrected ActivityPub object handling for relative URLs, extended TypeScript types for RFC 6570 URI Template expressions in dispatcher paths, and implemented the FEP-5711 inverse collection properties, including likesOf, repliesOf, and followersOf.

Chanhaeng and Jiwon both came to Fedify through OSSCA 2025, Korea's Open Source Contribution Academy. I'm grateful that the program led to long-term maintainers, not just a few merged patches, and I'm looking forward to working with them in this new role.

w3id.org

Cookie monster!

@hongminhee@hollo.social

Schedule's finalized for the Fediverse & Social Web track at @COSCUP 2026: Sunday, August 9, room TR411, 9:30 AM–4:00 PM. Twelve sessions all day. Really happy with how the lineup came together.

The Fediverse & Social Web track runs on Sunday, August 9 (day 2 of COSCUP 2026) in room TR411 at National Taiwan University of Science and Technology (NTUST), Taipei.

Twelve sessions across the day, covering ActivityPub implementations, governance and community building in East Asia, internationalization, and non-Latin script support on the fediverse.

Time Session Speaker
9:30 AM Federation Is Not Enough: Governance Patterns for the Open Social Web in East Asia Roro Park
10:00 AM Decentralized by Design, Connected by Culture: Japan's Fediverse and OSS Ecosystem Through FediLUG Yuki Onobuchi (@Yohei_Zuho)
10:30 AM Building a Fediverse on the CloudFlare Edge: SiliconBeest SAE JIN KIM (@siliconsjang)
11:00 AM From 0 to Fediverse Jihyeok Seo (@jihyeok)
11:30 AM Feder: One ActivityPub Core, Many Runtimes Jiwon Kwon (@z9mb1)
12:30 PM From One Codebase to Many Clients: How We Turn Mastodon Instances into No-Code Mobile Apps and Help Grow the Fediverse Aung Kyaw Phyo, Ye Myat Thu
1:00 PM ActivityPlug: a unified API layer for ActivityPub server software Haze (@nebuleto)
1:30 PM ActivityPub 1.1 Evan Prodromou (@evan)
2:00 PM I just wanted ruby annotations: writing in dead scripts on the living fediverse Hong Minhee (洪 民憙) (@hongminhee)
2:30 PM Vertical writing for the Mongolian script on Mastodon Itoh Shimon (@shimon1024)
3:00 PM @小明@範例.測試, or, Fediverse handles in every language Jim DeLaHunt (@jdlh)
3:30 PM From CMS to Fediverse: Drupal's ActivityPub module Jiajun Xu (@foolfitz)

@COSCUP 2026 takes place August 8–9 at NTUST, Taipei. The full schedule is at pretalx.coscup.org/coscup-2026/schedule/.

pretalx.coscup.org

COSCUP 2026 - Conference for Open Source Coders, Users, and Promoters

Schedule, talks and talk submissions for COSCUP 2026 - Conference for Open Source Coders, Users, and Promoters

The Fediverse & Social Web track runs on Sunday, August 9 (day 2 of COSCUP 2026) in room TR411 at National Taiwan University of Science and Technology (NTUST), Taipei.

Twelve sessions across the day, covering ActivityPub implementations, governance and community building in East Asia, internationalization, and non-Latin script support on the fediverse.

Time Session Speaker
9:30 AM Federation Is Not Enough: Governance Patterns for the Open Social Web in East Asia Roro Park
10:00 AM Decentralized by Design, Connected by Culture: Japan's Fediverse and OSS Ecosystem Through FediLUG Yuki Onobuchi (@Yohei_Zuho)
10:30 AM Building a Fediverse on the CloudFlare Edge: SiliconBeest SAE JIN KIM (@siliconsjang)
11:00 AM From 0 to Fediverse Jihyeok Seo (@jihyeok)
11:30 AM Feder: One ActivityPub Core, Many Runtimes Jiwon Kwon (@z9mb1)
12:30 PM From One Codebase to Many Clients: How We Turn Mastodon Instances into No-Code Mobile Apps and Help Grow the Fediverse Aung Kyaw Phyo, Ye Myat Thu
1:00 PM ActivityPlug: a unified API layer for ActivityPub server software Haze (@nebuleto)
1:30 PM ActivityPub 1.1 Evan Prodromou (@evan)
2:00 PM I just wanted ruby annotations: writing in dead scripts on the living fediverse Hong Minhee (洪 民憙) (@hongminhee)
2:30 PM Vertical writing for the Mongolian script on Mastodon Itoh Shimon (@shimon1024)
3:00 PM @小明@範例.測試, or, Fediverse handles in every language Jim DeLaHunt (@jdlh)
3:30 PM From CMS to Fediverse: Drupal's ActivityPub module Jiajun Xu (@foolfitz)

@COSCUP 2026 takes place August 8–9 at NTUST, Taipei. The full schedule is at pretalx.coscup.org/coscup-2026/schedule/.

pretalx.coscup.org

COSCUP 2026 - Conference for Open Source Coders, Users, and Promoters

Schedule, talks and talk submissions for COSCUP 2026 - Conference for Open Source Coders, Users, and Promoters

@yabuki@pao.moe

deno --version
deno 2.9.0 (stable, release, x86_64-unknown-linux-gnu)
v8 14.9.207.2-rusty
typescript 6.0.3

@hongminhee@hackers.pub

Hackers' Pub에 조직 계정 기능이 생겼습니다! 그리고 Hackers' Pub 공식 계정도 생겼고요: @hackerspub. 많이들 팔로 부탁드립니다!

hackers.pub

Hackers' Pub에 조직(organization) 기능이 생겼습니다

@hackerspub@hackers.pub

Hackers' Pub에 드디어 개인 계정 외에 조직(organization) 계정을 만들 수 있게 되었습니다. 조직 계정은 Hackers' Pub에서 특정 조직·프로젝트의 공식 계정을 만들기 위한 용도입니다. GitHub이나 GitLab, Codeberg 등에서 조직 기능을 사용해 보셨다면, 혹은 Facebook에서 페이지 기능을 사용해 보셨다면, 비슷한 개념으로 받아들이셔도 됩니다. 조직 계정에는 하나 이상의 개인 계정이 속하게 되며, 구성원들 누구나 조직 명의로 단문(note) 및 게시글(article)을 올릴 수 있게 됩니다. 단, 조직 기능은 새 웹 프런트엔드(web-next)에서만 사용 가능합니다.

조직 계정은 개인 계정과 많은 면에서 공통점이 있습니다. 이름과 아바타도 가질 수 있고, 약력(bio)도 입력 가능합니다. 다른 계정을 팔로할 수도 있고, 팔로워도 가질 수 있습니다. 댓글도 쓸 수 있고 에모지 리액션도 달 수 있습니다.

반면, 조직 계정은 개인 계정과는 달리 로그인할 수 없습니다. 로그인 할 수 없으니 이메일이나 패스키 등도 갖지 않습니다. 대신, 조직 구성원의 개인 계정으로 로그인한 뒤, 조직 명의를 선택하는 식으로 동작합니다. 또한, 북마크나 초고(draft)는 여전히 개인 계정에만 저장할 수 있습니다.

여러분 조직·프로젝트의 구성원이 단 한 명이라고 하더라도, 공식 계정을 만들 때는 조직 계정으로 생성하는 것을 권장합니다.

ActivityPub

개인 계정의 경우 ActivityPub 객체 상으로 Person 타입으로 표현되는 반면, 조직 계정의 경우에는 Organization 타입으로 표현됩니다.

"type": "Organization"

조직 만들기

조직은 누구나 설정계정조직 만들기에 가셔서 만드실 수 있습니다. 개인 계정과 마찬가지로, 조직 계정 역시 하나의 초대장을 소모합니다.

설정 → 계정 → 조직 만들기 폼

개인 계정 ↔ 조직 계정 사이의 스위치

조직 구성원은 언제든지 자신의 개인 계정과 조직 계정 사이에서 스위치가 가능합니다. 하나 이상의 조직에 몸 담고 있을 경우, 좌측 사이드바의 하단에 계정 스위치 UI가 보이게 됩니다.

계정 스위치 UI

단문 및 게시글 작성

조직 구성원은 단문 및 게시글을 작성할 때 해당 콘텐츠를 어떤 명의로 올릴 것인지 결정할 수 있습니다. 크게 세 종류의 선택지가 있습니다.

개인 명의

이전과 같이, 개인 계정이 쓴 콘텐츠로 올라갑니다.

조직 명의

조직으로서 작성한 콘텐츠로 올라가며, 다른 사람은 이 콘텐츠가 조직 구성원 중 누가 작성했는지 알 수 없습니다.

공동 저자

조직을 대표하여 개인 계정이 쓴 콘텐츠로 올라갑니다. 다른 사람에게는 해당 조직의 어느 구성원이 작성했는지 보입니다. 이 게시글이 바로 @hackerspub 조직 계정과 @hongminhee 개인 계정의 공동 명의로 쓰여진 예입니다.

ActivityPub

공동 저자는 ActivityPub 객체에서는 attributedTo 속성Organization 타입의 액터와 Person 타입의 액터가 함께 들어가는 것으로 표현됩니다.

"attributedTo": [
  "https://hackers.pub/ap/actors/019efc7c-70ad-7e2b-87dd-b1d36190cdee",
  "https://hackers.pub/ap/actors/019382d3-63d7-7cf7-86e8-91e2551c306c"
]

단, 아직 복수의 attributedTo 속성을 올바르게 해석하지 못하는 ActivityPub 소프트웨어가 많습니다. 그런 소프트웨어에서는 조직 계정의 명의로만 보일 수 있습니다.

콘텐츠 명의 선택 UI

이미 있는 조직 계정들

다음은 Hackers' Pub에 이미 개설된 조직 계정들의 목록입니다:

fedidev.kr

한국 연합우주 개발자 모임

한국에 거주하거나 한국어를 사용하는 연합우주(fediverse) 개발자들의 모임입니다.

@hackerspub@hackers.pub

Hackers' Pub에 드디어 개인 계정 외에 조직(organization) 계정을 만들 수 있게 되었습니다. 조직 계정은 Hackers' Pub에서 특정 조직·프로젝트의 공식 계정을 만들기 위한 용도입니다. GitHub이나 GitLab, Codeberg 등에서 조직 기능을 사용해 보셨다면, 혹은 Facebook에서 페이지 기능을 사용해 보셨다면, 비슷한 개념으로 받아들이셔도 됩니다. 조직 계정에는 하나 이상의 개인 계정이 속하게 되며, 구성원들 누구나 조직 명의로 단문(note) 및 게시글(article)을 올릴 수 있게 됩니다. 단, 조직 기능은 새 웹 프런트엔드(web-next)에서만 사용 가능합니다.

조직 계정은 개인 계정과 많은 면에서 공통점이 있습니다. 이름과 아바타도 가질 수 있고, 약력(bio)도 입력 가능합니다. 다른 계정을 팔로할 수도 있고, 팔로워도 가질 수 있습니다. 댓글도 쓸 수 있고 에모지 리액션도 달 수 있습니다.

반면, 조직 계정은 개인 계정과는 달리 로그인할 수 없습니다. 로그인 할 수 없으니 이메일이나 패스키 등도 갖지 않습니다. 대신, 조직 구성원의 개인 계정으로 로그인한 뒤, 조직 명의를 선택하는 식으로 동작합니다. 또한, 북마크나 초고(draft)는 여전히 개인 계정에만 저장할 수 있습니다.

여러분 조직·프로젝트의 구성원이 단 한 명이라고 하더라도, 공식 계정을 만들 때는 조직 계정으로 생성하는 것을 권장합니다.

ActivityPub

개인 계정의 경우 ActivityPub 객체 상으로 Person 타입으로 표현되는 반면, 조직 계정의 경우에는 Organization 타입으로 표현됩니다.

"type": "Organization"

조직 만들기

조직은 누구나 설정계정조직 만들기에 가셔서 만드실 수 있습니다. 개인 계정과 마찬가지로, 조직 계정 역시 하나의 초대장을 소모합니다.

설정 → 계정 → 조직 만들기 폼

개인 계정 ↔ 조직 계정 사이의 스위치

조직 구성원은 언제든지 자신의 개인 계정과 조직 계정 사이에서 스위치가 가능합니다. 하나 이상의 조직에 몸 담고 있을 경우, 좌측 사이드바의 하단에 계정 스위치 UI가 보이게 됩니다.

계정 스위치 UI

단문 및 게시글 작성

조직 구성원은 단문 및 게시글을 작성할 때 해당 콘텐츠를 어떤 명의로 올릴 것인지 결정할 수 있습니다. 크게 세 종류의 선택지가 있습니다.

개인 명의

이전과 같이, 개인 계정이 쓴 콘텐츠로 올라갑니다.

조직 명의

조직으로서 작성한 콘텐츠로 올라가며, 다른 사람은 이 콘텐츠가 조직 구성원 중 누가 작성했는지 알 수 없습니다.

공동 저자

조직을 대표하여 개인 계정이 쓴 콘텐츠로 올라갑니다. 다른 사람에게는 해당 조직의 어느 구성원이 작성했는지 보입니다. 이 게시글이 바로 @hackerspub 조직 계정과 @hongminhee 개인 계정의 공동 명의로 쓰여진 예입니다.

ActivityPub

공동 저자는 ActivityPub 객체에서는 attributedTo 속성Organization 타입의 액터와 Person 타입의 액터가 함께 들어가는 것으로 표현됩니다.

"attributedTo": [
  "https://hackers.pub/ap/actors/019efc7c-70ad-7e2b-87dd-b1d36190cdee",
  "https://hackers.pub/ap/actors/019382d3-63d7-7cf7-86e8-91e2551c306c"
]

단, 아직 복수의 attributedTo 속성을 올바르게 해석하지 못하는 ActivityPub 소프트웨어가 많습니다. 그런 소프트웨어에서는 조직 계정의 명의로만 보일 수 있습니다.

콘텐츠 명의 선택 UI

이미 있는 조직 계정들

다음은 Hackers' Pub에 이미 개설된 조직 계정들의 목록입니다:

fedidev.kr

한국 연합우주 개발자 모임

한국에 거주하거나 한국어를 사용하는 연합우주(fediverse) 개발자들의 모임입니다.

@grishka@mastodon.social

Pro tip for fediverse developers: you most probably have to look at ActivityPub representations of things a lot. And you most often have these things open in your browser already.

So, add browser.pub as a search engine like this, so you could just type "ap " in front of the URL in your address bar to see that object as ActivityPub JSON.

Using BrowserPub instead of curl or a REST API client has the bonus that the request is signed and some servers require that.

@grishka@mastodon.social

Wow, Misskey has finally added the replies collection to posts??? Nice. Even fewer incomplete threads.

Fedify 2.3.0 is out! This release is largely about production observability: OpenTelemetry metrics now cover every major federation path, and a monitoring guide and runnable example stack ship alongside them. Also new: a delivery circuit breaker that holds queued activities for unreachable servers rather than retrying indefinitely; @fedify/backfill, a new package for reconstructing conversations via FEP-f228; and fedify bench, an ActivityPub-aware load testing command. Release notes: https://github.com/fedify-dev/fedify/discussions/821.

Thanks to @2chanhaeng (@fedify/uri-template), @z9mb1 (@fedify/backfill), @sabrinkmann (FEP-0837 vocabulary), @nyanrus (@fedify/lint/oxlint), and @fruitsssdev (--skip-install) for their contributions to this release.

w3id.org

Cookie monster!

Seonbi is a Korean typography tool. It fixes the small things I don't want to handle by hand: curly quotes, spacing around punctuation, hanja annotations, and other Korean prose conventions.

https://github.com/dahlia/seonbi

github.com

GitHub - dahlia/seonbi: SmartyPants for Korean language

SmartyPants for Korean language. Contribute to dahlia/seonbi development by creating an account on GitHub.

Gukhanmun converts mixed hanja-hangul Korean text into hangul-only output, using the Standard Korean Dictionary. It handles plain text, HTML, and Markdown, with parenthetical or ruby annotations when you need them. There's a CLI, a Rust crate, and a WebAssembly build.

https://gukhanmun.org/

gukhanmun.org

Gukhanmun

Rust/JavaScript library that converts mixed-script Korean into hangul-only text

Hongdown is the Markdown formatter I use across most of my own projects. Written in Rust, it enforces an opinionated style for headings, code blocks, lists, links, and East Asian wide characters. There are integrations for Neovim, VS Code, Zed, and Helix.

https://github.com/dahlia/hongdown

github.com

GitHub - dahlia/hongdown: A Markdown formatter that enforces Hong Minhee's Markdown style conventions

A Markdown formatter that enforces Hong Minhee's Markdown style conventions - dahlia/hongdown

Upyo is a zero-dependency email sending library for TypeScript. It gives the same API for SMTP, Mailgun, Resend, SendGrid, Amazon SES, and more, so changing email providers doesn't mean rewriting your send code. Works on Node.js, Deno, Bun, and edge functions.

https://upyo.org/

upyo.org

Upyo

Upyo is a simple and modern email sending library with a universal interface for emailing across runtimes like Node.js, Deno, Bun, and edge functions. It provides type-safe APIs, dead simple usage, and supports multiple email providers.

LogTape is a zero-dependency logging library for TypeScript and JavaScript. It works in Node.js, Deno, Bun, browsers, and edge functions. I made it especially for library authors who want to emit logs without choosing everyone else's logger for them.

https://logtape.org/

logtape.org

LogTape: unobtrusive logging for modern JavaScript | LogTape

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

Fedify is a TypeScript/JavaScript library for building fediverse software with ActivityPub. It takes care of the annoying protocol parts: WebFinger, HTTP Signatures, inboxes, outboxes, and NodeInfo. Ghost uses it for their fediverse integration, and the work is backed by the @sovtechfund.

https://fedify.dev/

fedify.dev

Fedify

Fedify is a TypeScript library for building federated server apps powered by ActivityPub and other standards, so-called fediverse.

@hongminhee@hollo.social

No day job. Just me, building F/OSS full-time on public grants and individual sponsorships. If my work has saved you time, please consider sponsoring me on GitHub: https://github.com/sponsors/dahlia.

I maintain Fedify, Hollo, Hackers' Pub, LogTape, Optique, Upyo, Hongdown, Gukhanmun, and Seonbi. A thread on each ↓

github.com

Sponsor @dahlia on GitHub Sponsors

I usually write open source software libraries and small CLI programs, which means their consumers are mostly software engineers. My interests are: fediverse & CJK languages.