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

洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social

1,083 following1,897 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

@sabrinkmann@hachyderm.io

Tmw at the I will talk about what cool and awesome Activitpub/Fediverse project which are NOT (Social) Media or blogging (in german).
Some of the projects I will talk about will be:
codeberg.org/flohmarkt/flohmar
@manyfold
github.com/open-wanderer/wande
@encyclia
@fitpub
codeberg.org/54GradSoftware/me

Do you have any other projects one should mention in the talk?
I only have 20min but I will try my best.

codeberg.org

menuverse

menuverse

@hongminhee@hollo.social

なるほど。漢語の「旅券」という表現が公式にはより好まれる一方、日常的にはカタカナの「パスポート」のほうが好まれるのですね。理解しました。

参考までに、韓国では「旅券(여권)」という表現だけを使い、「패스포트(パスポート)」と言っても普通は意味は通じますが、韓国語ではなく英語だという認識が強いです。

@jj1bdx.tokyo@bsky.brid.gy · Reply to 洪 民憙 (Hong Minhee) :nonbinary:

日本政府の公式名称は「旅券」です。問題なく通じます。ただ、公務員でない人達は知らないかもしれません。なにしろ旅券の普及率が低い国なので…。

@novik_st@ak2.suzu-ya.info
パスポートを旅券と書くと、とても行政文書的な感じがする(わたしはちょっとカッコいいとも思って使うことがある🤣)
@hongminhee@hollo.social

日本では「旅券」という言い方はあまり使わないんでしょうか?普通「パスポート」って表現しか聞いたことがない気がして。

@hongminhee@hollo.social

()9() 全國同時地方選擧(전국동시지방 선거) 投票(투표) 完了(완료)!

第9回 全國同時地方選擧 投票 認證 寫眞. 背景에는 「聖水1街第1洞 第4投票所」라고 적힌 案內板이 附着되어 있고, 그 앞쪽으로 붉은색 投票 圖章(卜 模樣)이 鮮明하게 찍힌 揭示者 洪民憙의 오른손 주먹이 놓여 있다.
ALT text

第9回 全國同時地方選擧 投票 認證 寫眞. 背景에는 「聖水1街第1洞 第4投票所」라고 적힌 案內板이 附着되어 있고, 그 앞쪽으로 붉은색 投票 圖章(卜 模樣)이 鮮明하게 찍힌 揭示者 洪民憙의 오른손 주먹이 놓여 있다.

@sabrinkmann@hachyderm.io · Reply to Samuel Brinkmann

The software is built with @fedify and uses Nuxt for the server and server-side rendering. This is my first bigger Fedify project, so I'm looking for improvements and best practices.
The Fediverse data structure is built on top of: codeberg.org/fediverse/fep/src.
From the data point of view, this includes the proposal and resourceConformsTo field, which links to an URI. Like: mensa.mahlzeitheute.de/users/f.
Behind this is a JSON LD with a description of the food. As someone who is gluten intolerant, the allergen information is quite relevant and interesting. I'm not sure if this is the best way, and I'm interested what others would do. [2/4]

@zundan@mastodon.zunda.ninja · Reply to zunda
@lobsters@mastodon.social
@reiver@mastodon.social

Craft-Lovers and Make-It-Go People

A nice article by @hongminhee on 2 different types programmers — and how each of them is reacting to AI Coding Tools.

writings.hongminhee.org/2026/0

One of the comments on lobste.rs is also apt.

lobste.rs/s/vxsjiv/why_craft_l

lobste.rs/s/vxsjiv/why_craft_l

(And something pointed out by others.)

lobste.rs

Why craft-lovers are losing their craft

37 comments

@hongminhee@hollo.social

Unpopular opinion: Java's checked exceptions are underrated, and I think any language that uses exception-based error handling (rather than ADT-based error handling) should adopt checked exceptions.

@Yohei_Zuho@mstdn.y-zu.org

【Fediverseで 🎨】
Mastodon/Misskeyでログインして、みんなで絵しりとりができる、「トゥーとり」のベータ版をリリースしました!
前の人が描いた絵を当てると自分の番になり、絵をつなげることができます!!
遊んでみてね!!

tootori.app

@hongminhee@hollo.social

國漢文混用體(국한문 혼용체) 텍스트를 한글로 바꿔주는 Gukhanmun 라이브러리를 만들었습니다. RustJavaScript 라이브러리로도 쓸 수 있고, CLI로도 쓸 수 있습니다. 特徵(특징)은 다음과 같습니다:

()은 몇 () () Seonbi라는 國漢文混用體(국한문 혼용체) 텍스트를 한글로 바꿔주는 Haskell 라이브러리 () CLI 프로그램을 만든 바 있는데요. 事實(사실) 그게 ()機能(기능)이긴 했지만, 그 ()에도 各種(각종) 文章符號(문장 부호)를 올바르게 校正(교정)해주는 機能(기능)도 있었습니다. 이()에 Seonbi의 漢字(한자)→한글 變換(변환)에만 集中(집중)하여 다시 만든 것입니다. Haskell 라이브러리다 보니 移植性(이식성)도 아무래도 아쉬웠고, 漢字語(한자어) 變換(변환)에 있어서도 貪慾的(탐욕적)(greedy)으로 動作(동작)하는 限界(한계)도 있었거든요.

Seonbi는 그대로 繼續(계속) 維持補修(유지보수)할 생각이긴 합니다만, 새 機能(기능)을 넣진 않을 것 같습니다. 앞으로는 Gukhanmun에 集中(집중)하려고요.

github.com

GitHub - dahlia/seonbi: SmartyPants for Korean language

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

@hongminhee@hollo.social

國漢文混用體(국한문 혼용체) 텍스트를 한글로 바꿔주는 Gukhanmun 라이브러리를 만들었습니다. RustJavaScript 라이브러리로도 쓸 수 있고, CLI로도 쓸 수 있습니다. 特徵(특징)은 다음과 같습니다:

()은 몇 () () Seonbi라는 國漢文混用體(국한문 혼용체) 텍스트를 한글로 바꿔주는 Haskell 라이브러리 () CLI 프로그램을 만든 바 있는데요. 事實(사실) 그게 ()機能(기능)이긴 했지만, 그 ()에도 各種(각종) 文章符號(문장 부호)를 올바르게 校正(교정)해주는 機能(기능)도 있었습니다. 이()에 Seonbi의 漢字(한자)→한글 變換(변환)에만 集中(집중)하여 다시 만든 것입니다. Haskell 라이브러리다 보니 移植性(이식성)도 아무래도 아쉬웠고, 漢字語(한자어) 變換(변환)에 있어서도 貪慾的(탐욕적)(greedy)으로 動作(동작)하는 限界(한계)도 있었거든요.

Seonbi는 그대로 繼續(계속) 維持補修(유지보수)할 생각이긴 합니다만, 새 機能(기능)을 넣진 않을 것 같습니다. 앞으로는 Gukhanmun에 集中(집중)하려고요.

github.com

GitHub - dahlia/seonbi: SmartyPants for Korean language

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

@hongminhee@hollo.social · Reply to Steve Bate

@steve @mariusor @nick Most deletes happen soon after posting, before many non-followers have fetched the object. Most posts are never boosted anyway. So maybe: if a post has never received an Announce, send the Delete only to followers; once it has, fall back to the current wider delivery.

The obvious race is a boost arriving just before the delete, but I think that still mostly works. The server receiving the Announce has to fetch the original, and by then it should get a 404 Not Found.

That would avoid a lot of unnecessary Delete fanout.

@hongminhee@hollo.social

When I need TypeScript to behave like a shell script, I reach for dax. It started Deno-only, but now works on Node.js too.

Instead of calling node:child_process or writing a .sh file, you write commands in a tagged template literal:

const branch = await $`git rev-parse --abbrev-ref HEAD`.text();
await $`echo "Deploying ${branch}"`;
await $`deno task build && deno task deploy`;

I can still write the shell syntax I reach for most: &&, ||, pipes, redirects, and subshells. It uses deno_task_shell, so the same script can run on Windows without rewriting anything.

Interpolations are escaped automatically. $`mkdir ${dir}` stays safe even if dir contains spaces or quotes. Output parsing lives on the command itself: .text(), .json(), .lines().

I've been reaching for it whenever a .sh script starts breaking on Windows. For my scripts, it's usually been close to a drop-in.

github.com

GitHub - denoland/deno_task_shell: Cross-platform shell for deno task.

Cross-platform shell for deno task. Contribute to denoland/deno_task_shell development by creating an account on GitHub.