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

洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social

1,111 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

Just released 0.9.0! 🎉

This version brings two major improvements to our zero-dependency library for :

  1. New Synchronous Configuration API: You can now configure LogTape synchronously with configureSync(), disposeSync(), and resetSync(). Perfect for simpler setups where you don't need async operations!

  2. Better Runtime Compatibility: We've moved all file-related components to a separate @logtape/file package. This means the core package now works flawlessly across all JavaScript environments—browsers, edge functions, and various bundlers without any file system dependencies.

Plus, we've added level mapping options for console sinks, giving you more control over how your logs appear.

Check out the full release notes for migration details:

https://hackers.pub/@hongminhee/2025/logtape-090

hackers.pub

Hackers' Pub

@hongminhee@hackers.pub

We're excited to announce the release of LogTape 0.9.0! This version brings important improvements to make LogTape more flexible across different JavaScript environments while simplifying configuration for common use cases.

What's New

  • Synchronous Configuration API: Added new synchronous configuration functions for environments where async operations aren't needed or desired
  • Improved Runtime Compatibility: Moved file-system dependent components to a separate package for better cross-runtime support

New Features

Synchronous Configuration API: Simplifying Your Setup

Added synchronous versions of the configuration functions:

These functions offer a simpler API for scenarios where async operations aren't needed, allowing for more straightforward code without awaiting promises. Note that these functions cannot use sinks or filters that require asynchronous disposal (such as stream sinks), but they work perfectly for most common logging configurations.

import { configureSync, getConsoleSink } from "@logtape/logtape";

configureSync({ 
  sinks: {
    console: getConsoleSink(),
  },
  loggers: [
    {
      category: "my-app",
      lowestLevel: "info",
      sinks: ["console"],
    },
  ],
});

Console Sink Enhancements

Breaking Changes

File Sinks Moved to Separate Package: Better Cross-Platform Support

To improve runtime compatibility, file-related sinks have been moved to the @logtape/file package:

This architectural change ensures the core @logtape/logtape package is fully compatible with all JavaScript runtimes, including browsers and edge functions, without introducing file system dependencies. You'll now enjoy better compatibility with bundlers like Webpack, Rollup, and Vite that previously had issues with the file system imports.

Migration Guide

If you were using file sinks, update your imports:

// Before
import { getFileSink, getRotatingFileSink } from "@logtape/logtape";

// After
import { getFileSink, getRotatingFileSink } from "@logtape/file";

Don't forget to install the new package:

# For npm, pnpm, Yarn, Bun
npm add @logtape/file

# For Deno
deno add jsr:@logtape/file

Looking Forward

This release represents our ongoing commitment to making LogTape the most flexible and developer-friendly logging solution for JavaScript and TypeScript applications. We're continuing to improve performance and extend compatibility across the JavaScript ecosystem.

Contributors

Special thanks to Murph Murphy for their valuable contribution to this release.


As always, we welcome your feedback and contributions! Feel free to open issues or pull requests on our GitHub repository.

Happy logging!

github.com

GitHub - dahlia/logtape: Simple logging library with zero dependencies for Deno, Node.js, Bun, browsers, and edge functions

Simple logging library with zero dependencies for Deno, Node.js, Bun, browsers, and edge functions - dahlia/logtape

@hongminhee@hackers.pub

We're excited to announce the release of LogTape 0.9.0! This version brings important improvements to make LogTape more flexible across different JavaScript environments while simplifying configuration for common use cases.

What's New

  • Synchronous Configuration API: Added new synchronous configuration functions for environments where async operations aren't needed or desired
  • Improved Runtime Compatibility: Moved file-system dependent components to a separate package for better cross-runtime support

New Features

Synchronous Configuration API: Simplifying Your Setup

Added synchronous versions of the configuration functions:

These functions offer a simpler API for scenarios where async operations aren't needed, allowing for more straightforward code without awaiting promises. Note that these functions cannot use sinks or filters that require asynchronous disposal (such as stream sinks), but they work perfectly for most common logging configurations.

import { configureSync, getConsoleSink } from "@logtape/logtape";

configureSync({ 
  sinks: {
    console: getConsoleSink(),
  },
  loggers: [
    {
      category: "my-app",
      lowestLevel: "info",
      sinks: ["console"],
    },
  ],
});

Console Sink Enhancements

Breaking Changes

File Sinks Moved to Separate Package: Better Cross-Platform Support

To improve runtime compatibility, file-related sinks have been moved to the @logtape/file package:

This architectural change ensures the core @logtape/logtape package is fully compatible with all JavaScript runtimes, including browsers and edge functions, without introducing file system dependencies. You'll now enjoy better compatibility with bundlers like Webpack, Rollup, and Vite that previously had issues with the file system imports.

Migration Guide

If you were using file sinks, update your imports:

// Before
import { getFileSink, getRotatingFileSink } from "@logtape/logtape";

// After
import { getFileSink, getRotatingFileSink } from "@logtape/file";

Don't forget to install the new package:

# For npm, pnpm, Yarn, Bun
npm add @logtape/file

# For Deno
deno add jsr:@logtape/file

Looking Forward

This release represents our ongoing commitment to making LogTape the most flexible and developer-friendly logging solution for JavaScript and TypeScript applications. We're continuing to improve performance and extend compatibility across the JavaScript ecosystem.

Contributors

Special thanks to Murph Murphy for their valuable contribution to this release.


As always, we welcome your feedback and contributions! Feel free to open issues or pull requests on our GitHub repository.

Happy logging!

github.com

GitHub - dahlia/logtape: Simple logging library with zero dependencies for Deno, Node.js, Bun, browsers, and edge functions

Simple logging library with zero dependencies for Deno, Node.js, Bun, browsers, and edge functions - dahlia/logtape

@thisismissem@hachyderm.io

Oh! Also had another API added to Mastodon today: currently when you attach media there's no way to immediately get it deleted, this changes that by allowing clients to delete media not yet attached to any status: github.com/mastodon/mastodon/p

This came about because I was looking at the media upload handling in @hollo the other weekend

github.com

Add API to delete media attachments that are not in use by ThisIsMissEm · Pull Request #33991 · mastodon/mastodon

This pairs nicely with #33988, allowing for clients to delete media which they have just uploaded, instead of leaving the file uploaded until the next scheduled cleanup.

We're considering packaging the Fedify CLI for Homebrew to make installation easier on macOS and Linux (via Linuxbrew).

Would you use a formula for CLI?

  • Yes, I'd definitely use it on macOS.8 (32%)
  • Yes, I'd definitely use it on Linux.3 (12%)
  • Maybe, depending on the implementation.4 (16%)
  • No, I prefer other installation methods.10 (40%)

docs.brew.sh

Homebrew on Linux

Documentation for the missing package manager for macOS (or Linux).

@weekinfediverse@mitra.social
:_ko::_ko::_a::_ni::_lya::_n:
@cocoa_vrc@misskey.io

apsig 0.4.0を公開しました。これは破壊的な変更を含むメジャーリリースです
https://pypi.org/project/apsig/0.4.0/
https://github.com/AmaseCocoa/apsig/releases/tag/0.4.0

修正内容:
- 署名にHostヘッダーを含めるようになりました

非推奨:
apsig.draft.sign.draftSignerは非推奨となり、1.0で削除予定です。代わりにapsig.draft.sign.Signerを使用してください。
apsig.draft.verify.draftVerifierは非推奨となり、1.0で削除予定です。代わりにapsig.draft.verify.Verifierを使用してください。

Release 0.4.0 · AmaseCocoa/apsig

This is a major release containing disruptive changes! 💣 Bug Fixed fix(draft): include Host header in signatures Deprecation apsig.draft.sign.draftSigner has been deprecated and will be removed ...

:_ko::_ko::_a::_ni::_lya::_n:
@cocoa_vrc@misskey.io
@hongminhee@hollo.social
@hongminhee@hackers.pub · Reply to 洪 民憙 (Hong Minhee)

별 거 아니지만, 로그인 안 한 상태에서 댓글 다는 방법을 안내하도록 해봤다.

Hackers' Pub의 게시물을 로그인하지 않은 상태에서 본 모습. 다른 연합우주(fediverse) 계정에서 댓글 다는 방법을 안내하고 있다.
ALT text

Hackers' Pub의 게시물을 로그인하지 않은 상태에서 본 모습. 다른 연합우주(fediverse) 계정에서 댓글 다는 방법을 안내하고 있다.

@hongminhee@hollo.social

韓國語(한국어)regression test를 흔히 「回歸(회귀) 테스트」라고 옮기고 있는 것 같은데, 이게 맞는 飜譯語(번역어)일까? 차라리 「退行(퇴행) 테스트」가 더 맞지 않을까?

@cheeaun@mastodon.social

Took me a while to debug this on Phanpy's Catch-up, date range is wrong, the squares are all group into a single tall bar 😂

Turns out one of the posts is… ✨in the future✨ (2026). This: community.nodebb.org/topic/186 (Mastodon: mastodon.social/@julian@commun)

Anyone knows why/how this happens? 😆

Phanpy's catch-up UI showing posts from February 28, 2025, 1:54 AM to February 28, 2026, 1:00 AM.

The posts visualization shows on very tall bar of squares.
ALT text

Phanpy's catch-up UI showing posts from February 28, 2025, 1:54 AM to February 28, 2026, 1:00 AM. The posts visualization shows on very tall bar of squares.

Code snippet from browser's devtools console, displaying date and time information with properties like `minDate`, `maxDate`, and `range`, in the context of Singapore Standard Time.

minDate shows Feb 28 2025, maxDate shows Feb 28 2026.
ALT text

Code snippet from browser's devtools console, displaying date and time information with properties like `minDate`, `maxDate`, and `range`, in the context of Singapore Standard Time. minDate shows Feb 28 2025, maxDate shows Feb 28 2026.

A post featuring a surprised-looking cat, with text mentioning "NodeBB Community" and hashtags "#nodebb" and "#release."

The post is posted on Feb 28 2026.
ALT text

A post featuring a surprised-looking cat, with text mentioning "NodeBB Community" and hashtags "#nodebb" and "#release." The post is posted on Feb 28 2026.

@hongminhee@hollo.social

요즘 Hackers’ Pub이라는 ActivityPub으로 聯合(연합)되는 開發者用(개발자용) 블로그 플랫폼을 만들고 있습니다. 쉽게 말하면 聯合宇宙(연합우주)(fediverse) 버전의 velog 같은 거라고 보면 되겠지요. 開發(개발) 로그를 @hongminhee 쪽으로 올리고 있으니, 關心(관심) 있으신 분들은 팔로해 주세요!

아, 그리고 Hackers’ Pub은 아직 招待制(초대제)運營(운영)되고 있는데, 計定(계정) 만들고 싶은 분들은 DM 주시면 招待(초대)해 드리겠습니다.

https://fosstodon.org/@hongminhee/113479230281333582

fosstodon.org

洪 民憙 (Hong Minhee) (@hongminhee@fosstodon.org)

생각해 보니 여기에는 안 썼는데, 요즘 ActivityPub 베이스의 소프트웨어 엔지니어를 爲한 소셜 네트워크를 만들고 있습니다. 아마도 velog나 DEV랑 Mastodon이 섞인 느낌이 되지 않을까 싶어요. 아직 손 댄 지는 얼마 안 됐는데, 웬만큼 만들고 나면 다시 말씀드리겠습니다.

@hongminhee@fosstodon.org

생각해 보니 여기에는 안 썼는데, 요즘 ActivityPub 베이스의 소프트웨어 엔지니어를 爲한 소셜 네트워크를 만들고 있습니다. 아마도 velog나 DEV랑 Mastodon이 섞인 느낌이 되지 않을까 싶어요. 아직 손 댄 지는 얼마 안 됐는데, 웬만큼 만들고 나면 다시 말씀드리겠습니다.

@hanibsky.bsky.social@bsky.brid.gy

동물을 학대한 사람은 일정 기간 동물을 기르지 못하도록 하는 ‘동물 사육금지제도’가 추진됩니다. 늘어나는 유기를 예방하기 위해 반려견 등록제도를 ‘모든 개’로 확대하는 한편, 동물병원·펫호텔에 동물을 맡기고 찾지 않거나 빈 주택에 방치하는 행위도 동물유기로 처벌할 방침입니다.

동물학대 하면 ‘사육금지’…동물병원 유기도 처벌한다

hani.co.kr

동물학대 하면 ‘사육금지’…동물병원 유기도 처벌한다

동물을 학대한 사람은 일정 기간 동물을 기르지 못하도록 하는 ‘동물 사육금지제도’가 추진된다. 늘어나는 유기를 예방하기 위해 반려견 등록제도를 ‘모든 개’로 확대하는 한편, 동물병원·펫호텔에 동물을 맡기고 찾지 않거나 빈 주택에 방치하는 행위도 동물유기로 처벌할 방침이