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

洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social

1,118 following1,670 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 marius

@mariusor I don't disagree with the broader point, but I think there's a difference between a project being captured by capitalist interests and a person finding a way to keep the lights on. She wasn't funding a startup, she was paying rent. The authenticity you're describing is a real thing, but it's a lot easier to hold onto when you're not watching your savings disappear.

@hongminhee@hollo.social · Reply to marius

@mariusor Speaking as someone who knows her personally, it's hard to judge when I know how much of it came down to survival rather than principle. And the fact that she kept working on standards that benefit both ecosystems through all of that reads more like holding on than selling out, to me.

Fedify 2.1.0 is out!

The highlight of this release is onUnverifiedActivity(), a long-requested hook that lets you intercept inbound activities whose signatures couldn't be verified, instead of silently returning 401 and letting remote servers retry forever. Great for handling Delete activities from permanently gone actors.

Also new: full RFC 9421 Accept-Signature negotiation on both outbound and inbound paths, GoToSocial interoperability fixes, @fedify/mysql for MySQL/MariaDB backends, @fedify/astro for Astro integration, and fedify lookup --recurse for following reply chains.

Release notes: https://github.com/fedify-dev/fedify/discussions/642

github.com

Fedify 2.1.0: Unverified activity hooks, RFC 9421 negotiation, MySQL support, and Astro integration · fedify-dev/fedify · Discussion #642

Fedify is a TypeScript framework for building ActivityPub servers that participate in the fediverse. It handles the heavy lifting of federation—HTTP Signatures, JSON-LD processing, WebFinger, and m...

@hongminhee@hollo.social

An interview with @thisismissem from @APC: FediMod FIRES on building better and decentralised social media applications (by @XavCC).

Probably the biggest thing that I’ve learned over the years of the Fediverse is that it depends almost entirely on volunteer labour. There are a few people that are paid full time to work on the Fediverse. But to actually get the things that you need, it very much largely depends on volunteer labour, because projects are either chasing funding through grants or they're chasing funding through their nations. And those demands can often be at odds with what people overall need or want.

So that's probably the biggest learning from the Fediverse that I have: a lot of it is just run and funded by individuals and volunteers, which often means that it doesn't move as fast as more commercial operations.

apc.org

FediMod FIRES on building better and decentralised social media applications

Continuing our monthly interview series "Building a Free Internet of the Future", we talked to Emelia Smith, who is a software engineer. “Building a Free Internet of the Future" highlights the experiences and perspectives of individuals and communities supported by the NGI Zero (NGI0) grants, funded by the European Commission. 

@thisismissem@hachyderm.io
@fedidevkr@moim.live

FediDev KR 스프린트 세 번째 모임

한국 연합우주 개발자 모임(FediDev KR)은 연합우주(fediverse) 생태계를 더욱 풍성하게 만들기 위해 다양한 개발자들이 모여 스프린트 모임을 진행하는 커뮤니티입니다. 이 모임은 비정기적으로 개최되며, 모든 기여자들이 각자의 방식으로 생태계에 기여할 수 있는 열린 공간입니다.

지금까지 진행된 프로젝트

  • Hollo: 페디버스 기반의 1인용 마이크로 블로그 서비스
  • Chamsae: 메시징에 특화된 ActivityPub 기반 서비스
  • Fedify: ActivityPub 기반의 서비스를 쉽게 개발할 수 있도록 도와주는 라이브러리
  • HackersPub : ActivityPub 기반의 블로깅 서비스
  • Moim.live : ActivityPub 기반의 모임 개최 및 체크인 SNS
    이 외에도 많은 개발자들이 각자의 아이디어로 다양한 프로젝트에 기여하고 있습니다.

스프린트 모임에서는 연합우주 생태계를 확장하고 발전시키기 위한 다양한 활동이 이루어집니다. 새로운 서비스를 개발하거나, 응용 프로그램을 제작하고, 번역에 기여하는 등, 기여 방식은 형식에 구애받지 않고 자유롭게 선택할 수 있습니다. 누구나 자신의 역량에 맞는 방법으로 참여할 수 있습니다.

모임은 서울특별시 성동구 상원길 26, 뚝섬역 5번 출구 근처 어딘가에 있는 튜링의 사과에서 진행합니다.
일정은 3월 중순 어딘가에, 모여서 각자 편하게 기여하다가 가시면 됩니다. 처음오는 분들이셔도 좋습니다.

몸만 오시면 됩니다. 비용은 튜링의 사과 이용료만 챙겨 주시면 돼요.
감사합니다.

📅 2026-04-11 11:00 — 18:00 (GMT+9)

View event details

moim.live

FediDev KR 스프린트 세 번째 모임 — FediDev KR (@fedidevkr@moim.live)

한국 연합우주 개발자 모임(FediDev KR)은 연합우주(fediverse) 생태계를 더욱 풍성하게 만들기 위해 다양한 개발자들이 모여 스프린트 모임을 진행하는 커뮤니티입니다. 이 모임은 비정기적으로 개최되며, 모든 기여자들이 각자의 방식으로 생태계에 기여할 수 있는 열린 공간입니다. 지금까지 진행된 프로젝트 - Hollo: 페디버스 기반의 1인용 마이크로 블로그 서비스 - Chamsae: 메시징에 특화된 ActivityPub 기반 서비스 - Fedify: ActivityPub 기반의 서비스를 쉽게 개발할 수 있도록 도와주는 라이브러리 - HackersPub : ActivityPub 기반의 블로깅 서비스 - Moim.live : ActivityPub 기반의 모임 개최 및 체크인 SNS 이 외에도 많은 개발자들이 각자의 아이디어로 다양한 프로젝트에 기여하고 있습니다. 스프린트 모임에서는 연합우주 생태계를 확장하고 발전시키기 위한 다양한 활동이 이루어집니다. 새로운 서비스를 개발하거나, 응용 프로그램을 제작하고, 번역에 기여하는 등, 기여 방식은 형식에 구애받지 않고 자유롭게 선택할 수 있습니다. 누구나 자신의 역량에 맞는 방법으로 참여할 수 있습니다. 모임은 서울특별시 성동구 상원길 26, 뚝섬역 5번 출구 근처 어딘가에 있는 튜링의 사과에서 진행합니다. 일정은 3월 중순 어딘가에, 모여서 각자 편하게 기여하다가 가시면 됩니다. 처음오는 분들이셔도 좋습니다. 몸만 오시면 됩니다. 비용은 튜링의 사과 이용료만 챙겨 주시면 돼요. 감사합니다.

@evan Also, if it'd help to dig deeper, Fedify ships a couple of CLI tools that might be useful here:

  • fedify lookup will fetch and display the actor object, including the public key and its owner field, so you can quickly see whether the key document looks correct from the outside.
  • fedify inbox spins up a temporary public ActivityPub inbox and lets you send activities to it from your server, so you can observe exactly what Fedify receives and whether the signature verifies.

Both are in the @fedify/cli package. You can install it with:

npm install -g @fedify/cli

Or grab a standalone binary from the releases page.

Releases · fedify-dev/fedify

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

@evan Yes, that's exactly how it works. When Fedify verifies a draft-cavage signature on an incoming request, it:

  1. Extracts the keyId from the Signature header.
  2. Fetches the document at that keyId URL, expecting a key object (or an actor with a matching public key embedded).
  3. Reads the owner property of the key, which points to the actor's ActivityPub object URL.
  4. Fetches that actor object to confirm the key is actually associated with the claimed sender.

So if tags.pub is having a signature-related bug with Fedify, worth checking: does the keyId URL actually resolve to a key object with a correct owner pointing back to the actor? And does the actor object at that owner URL include the public key? If either fetch fails or returns unexpected data, Fedify will reject the signature.

@hongminhee@hollo.social

This piece appears to be a response to my recent essay on craft, alienation, and LLMs, so let me engage with it directly.

The argument collapses every social and structural explanation into a single move: the individual chose it. This is the classic libertarian reduction, and it has a well-known failure mode. Under this framework, there is no coherent distinction between a choice made under duress and a choice made freely. If a developer uses LLM coding assistants because their livelihood depends on keeping pace with colleagues who do, and the author's response is that no one forced them, well, no one forces a person at gunpoint to hand over their wallet either. The gun is still there.

The author acknowledges, mid-essay, that the system “can change incentives and tradeoffs.” But this is precisely what a structural analysis is. Once you admit that incentives can be arranged such that a person has no viable path except the one the system rewards, you have already conceded the core Marxian point. Calling it “alienation” or not is just terminology.

What the alienation framework actually claims is not that individuals don't choose. It's that the conditions under which those choices are made matter morally and analytically. My own essay is careful about this: I noted explicitly that the tension between craft and efficiency doesn't vanish under different political arrangements. The question survives capitalism; capitalism just answers it harshly. Dismissing this as a “denial of the craftsman” misreads the argument.

On LLM capabilities: the claim that none of these problems can be solved by LLMs (understanding systems, architecture decisions, debugging) reads as confident as of roughly two years ago. The frontier has moved. Coding agents are already handling non-trivial architectural reasoning in constrained domains, and the trajectory is visible. Anchoring the argument to current limitations, stated as permanent ones, is a move that ages badly.

[Also cross-posted to Lobsters and Hacker News threads.]

news.ycombinator.com

This piece appears to be a response to [my recent essay on craft, alienation, an... | Hacker News

@TypeScript@fosstodon.org

TypeScript 6.0 is now available!

This release brings better type-checking for methods, new standard library features, new module features for Node.js, and more!

But most important, this release brings us one step closer to the upcoming native-speed 7.0!

devblogs.microsoft.com/typescr

devblogs.microsoft.com

Announcing TypeScript 6.0 - TypeScript

TypeScript 6.0 is now available! TypeScript 6 is a stepping-stone release, aligning with the upcoming native-speed 7.0 release.

@CiaraNi@mastodon.green · Reply to Ciara

Ditto:

'Why are you still on Bluesky too?'

'But did you *delete* your Twitter account?'

’You said you switched to Proton mail too, oh that’s bad, once someone at Proton said something’

It’s nice to see new neighbours move into the Fediverse. It feels unwelcoming to see people immediately interview them about the purity of their intentions. Or telling them You’re Doing It Wrong. They've just arrived on a journey away from Big Tech. Maybe they'd prefer to be offered a seat and a cup of tea.

@CiaraNi@mastodon.green

Every time a newcomer posts an introduction and somebody tells them they shouldn’t have joined Mastodon.social and need to move to a different server, an angel loses their wings.

@hongminhee@hollo.social · Reply to Boyd Stephen Smith Jr.

hollo.social

I have a confession to make: w…

I have a confession to make: while Haskell will always be my first love, PureScript was the one that truly stole my heart. It felt like a “polished” version of Haskell, smoothing out the rough edges and adding gems like row polymorphism that I still miss dearly. It's heartbreaking to see it labeled a “dead” language now, especially with its primary focus being stuck in the JavaScript ecosystem while other backends remain second-class citizens. I've tried moving on with ReScript, Elm, or Gleam, but they never quite scratched that itch. They are great for what they are, but for someone used to the sheer expressive power of Haskell-like type systems, they feel a bit too “simple.” I find myself missing the depth and the “if it compiles, it works” confidence that only a truly robust type system provides. Lately, my eyes have been wandering toward Lean and MoonBit. Lean is fascinatingly powerful, though I'm still searching for a more seamless JavaScript/WebAssembly story there. MoonBit also looks incredibly promising—a WebAssembly-first language that seems to aim for a higher level of sophistication than the usual ML-likes. The quest for the perfect, type-safe web language continues.

@hongminhee@hollo.social

I have a confession to make: while Haskell will always be my first love, PureScript was the one that truly stole my heart. It felt like a “polished” version of Haskell, smoothing out the rough edges and adding gems like row polymorphism that I still miss dearly. It's heartbreaking to see it labeled a “dead” language now, especially with its primary focus being stuck in the JavaScript ecosystem while other backends remain second-class citizens.

I've tried moving on with ReScript, Elm, or Gleam, but they never quite scratched that itch. They are great for what they are, but for someone used to the sheer expressive power of Haskell-like type systems, they feel a bit too “simple.” I find myself missing the depth and the “if it compiles, it works” confidence that only a truly robust type system provides.

Lately, my eyes have been wandering toward Lean and MoonBit. Lean is fascinatingly powerful, though I'm still searching for a more seamless JavaScript/WebAssembly story there. MoonBit also looks incredibly promising—a WebAssembly-first language that seems to aim for a higher level of sophistication than the usual ML-likes. The quest for the perfect, type-safe web language continues.

@sublimer@mstdn.sublimer.me

Node.jsでTypeScript使えるやつはあくまでも型情報を落としているだけなので、Node.jsでTypeScriptを直接実行できるけどV8が直接実行しているわけではない
V8が直接TypeScript実行できるようになったらブラウザでもTypeScript使えるようになるのかな

@kosui@blog.kosui.me

TSKaigi 2026に採択されました。「TypeScriptのclassはなぜこうなったのか」というタイトルで、classの歴史的経緯・落とし穴・使いどころを体系的に整理する30分セッションです。

https://kosui.me/posts/2026/03/tskaigi

kosui.me

TSKaigi 2026にプロポーザルが採択されました

TSKaigi 2026で「TypeScriptのclassはなぜこうなったのか」というテーマで30分セッションに登壇します。classの歴史的経緯・落とし穴・使いどころを体系的に整理するトークです。