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

洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social

1,107 following1,898 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 RanolP
@ranolp@hackers.pub · Reply to 洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee 조금 길지만 제거 예정(예문: Features deprecated / 제거 예정인 기능)이 그럭저럭 쓸만한 번역어인 거 같고요. Gemini를 굴려보니 재밌는 번역어를 몇 제시해주네요.

  • 폐기 예정 / 폐지 예정
  • 비권장 / 지원 중단 예정
  • 구식 / 낡은 / 노후화된 / 대체될
  • 사양길의 / 저물어가는 / 쇠퇴한

다만 여전히 제게는 '제거 예정/제거할'이 가장 와닿네요.

  • This is a deprecated feature / 제거할 기능이야.
  • Have you marked it as deprecated? / 제거 예정이라 적어놨어?
  • Removed recently deprecated features / 최근 제거 예정이었던 기능을 지웠습니다
  • Don't use deprecated features / 제거될 기능은 사용하지 마

日本語(일본어)에서는 「非推奬(비추장)」이라는 말을 쓴다는데, 韓國語(한국어)에서는 「推奬(추장)」이라는 말을 잘 쓰지 않으니 「非推薦(비추천)乃至(내지)는 「非奬勵(비장려)程度(정도)가 되려나? 듣고 보니 「止揚(지양)」 같은 말로 翻譯(번역)해도 좋을 것 같기도…?

fedibird.com

tesaguri 🦀🦝 (@tesaguri@fedibird.com)

"deprecation"は日本語なら「非推奨」などと訳すところだろうけど、韓国では確立した訳語がないのか

@tesaguri@fedibird.com

"deprecation"は日本語なら「非推奨」などと訳すところだろうけど、韓国では確立した訳語がないのか

@tesaguri@fedibird.com

"deprecation"は日本語なら「非推奨」などと訳すところだろうけど、韓国では確立した訳語がないのか

@hongminhee@hollo.social

“Deprecation”에 對應(대응)되는 韓國語(한국어) 翻譯語(번역어)定立(정립)必要(필요)가 있다.

https://hackers.pub/@hongminhee/01977192-399f-76c5-9d8c-07051a8a803a

hackers.pub

다음 버전은 LogTape 1.0 찍어야지. Deprecated된 API 싹 다 정리해야겠다.

다음 버전은 LogTape 1.0 찍어야지. Deprecated된 API 싹 다 정리해야겠다.

@hongminhee@hollo.social

韓國語(한국어)에 「念頭(염두)하다」라는 動詞(동사)는 없다. 「마음 속」이라는 뜻의 【念頭(염두)】라는 名詞(명사)는 있다. 따라서 「念頭(염두) 두다」라는 表現(표현)은 잘못된 것이다. 풀어보면 「마음 속 해 두다」가 되는데 말이 안 된다. 「念頭(염두) 두다」가 맞는 表現(표현)이다. 풀어보면 「마음 속에 두다」가 되므로 말이 된다.

@hongminhee@hackers.pub · Reply to 洪 民憙 (Hong Minhee)
@hongminhee@hackers.pub · Reply to 洪 民憙 (Hong Minhee)
@hongminhee@hackers.pub

LogTape, a zero-dependency logging library, has released version 0.12.0! It now includes trace log level and syslog sink support.

hackers.pub

LogTape 0.12.0 Release Notes

LogTape, a zero-dependency logging library for JavaScript and TypeScript, has released version 0.12.0 with several enhancements. The update introduces a new `trace` log level for more granular debugging and improves file sink performance through configurable buffering. A significant addition is the `@logtape/syslog` package, enabling log message transmission to syslog servers using RFC 5424. The update also includes `Logger.warning()` as an alias for `Logger.warn()` for consistency. Furthermore, all LogTape packages now share unified versioning for better compatibility. The build infrastructure has been migrated from `dnt` to `tsdown`, enhancing compatibility with modern JavaScript toolchains and improving build times. This release optimizes logging capabilities and ensures smoother integration with various JavaScript runtimes.

@hongminhee@hackers.pub

LogTape is a zero-dependency logging library for JavaScript and TypeScript that provides a simple yet flexible logging system. It supports multiple JavaScript runtimes (Deno, Node.js, Bun, browsers, and edge functions), features hierarchical categories, structured logging, and offers seamless integration for both applications and libraries.

What's New in 0.12.0

Trace Log Level

LogTape now includes a trace severity level, which sits below debug in the verbosity hierarchy. This addition provides finer-grained control over logging output, particularly useful for detailed execution flow tracking during development and debugging.

  • Added "trace" to the LogLevel union type
  • Added Logger.trace() method for logging trace-level messages
  • The complete severity hierarchy is now: trace < debug < info < warning < error < fatal

Enhanced File Sink Performance

File sinks now support configurable buffering, significantly improving write performance for high-volume logging scenarios.

  • Added bufferSize option (default: 8192 characters) to control write buffering behavior
  • Added flushInterval option (default: 5000ms) for automatic time-based buffer flushing
  • Set bufferSize to 0 for immediate writes without buffering
  • Set flushInterval to 0 to disable time-based flushing
  • Buffer contents are automatically flushed when the sink is disposed

These options are available for both getFileSink() and getRotatingFileSink() functions.

Syslog Support

The new @logtape/syslog package enables sending log messages to syslog servers using the RFC 5424 format.

  • Support for both UDP and TCP protocols
  • All standard RFC 5424 facilities (kern, user, mail, daemon, local07, etc.)
  • Automatic priority calculation based on log levels
  • Structured data support for log record properties
  • Cross-runtime compatibility with Deno, Node.js, and Bun
  • Configurable connection timeouts, custom hostnames, and application names

Logger Method Alias

Added Logger.warning() as an alias for Logger.warn() to ensure consistency with the LogLevel type definition. This change addresses the naming mismatch where the LogLevel union type uses "warning" while the logger method was named warn(), making metaprogramming and dynamic method invocation more straightforward.

Unified Package Releases

Starting with version 0.12.0, all LogTape packages including @logtape/otel, @logtape/sentry, and @logtape/syslog share the same version number and are released together. This ensures compatibility between packages and simplifies version management for users.

Improved Build Infrastructure

LogTape has migrated from dnt to tsdown for npm package bundling. tsdown is a library-focused bundler built on top of Rolldown, a Rust-based bundler that powers the next generation of Vite. Unlike general-purpose bundlers, tsdown is specifically optimized for building TypeScript and JavaScript libraries with minimal configuration. This change brings several benefits:

  • Elimination of bundler warnings in Webpack, Vite, and other build tools
  • Improved compatibility with modern JavaScript toolchains
  • Better tree-shaking support
  • Cleaner package output
  • Faster build times through Rust-based performance optimizations

Migration Guide

Updating to Trace Level

If you have code that relies on debug being the lowest severity level, you may need to update your log level configurations:

// Before
{ lowestLevel: "debug" }  // This was the most verbose setting

// After
{ lowestLevel: "trace" }  // Now includes trace messages

Leveraging Buffer Configuration

To optimize file sink performance in high-throughput scenarios:

getFileSink("app.log", {
  bufferSize: 16384,      // Larger buffer for better performance
  flushInterval: 10_000    // Flush every 10 seconds
})

Installation

LogTape 0.12.0 is available on JSR and npm:

deno add jsr:@logtape/logtape  # Deno
npm  add     @logtape/logtape  # npm
pnpm add     @logtape/logtape  # pnpm
yarn add     @logtape/logtape  # yarn
bun  add     @logtape/logtape  # Bun

For the syslog sink:

deno add jsr:@logtape/syslog  # Deno
npm  add     @logtape/syslog  # npm
pnpm add     @logtape/syslog  # pnpm
yarn add     @logtape/syslog  # yarn
bun  add     @logtape/syslog  # Bun

Acknowledgments

We thank all contributors who helped make this release possible, including those who reported issues, submitted pull requests, and provided feedback.

For the complete list of changes, please refer to the changelog.

logtape.org

LogTape changelog | LogTape

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

@hongminhee@hackers.pub

LogTape is a zero-dependency logging library for JavaScript and TypeScript that provides a simple yet flexible logging system. It supports multiple JavaScript runtimes (Deno, Node.js, Bun, browsers, and edge functions), features hierarchical categories, structured logging, and offers seamless integration for both applications and libraries.

What's New in 0.12.0

Trace Log Level

LogTape now includes a trace severity level, which sits below debug in the verbosity hierarchy. This addition provides finer-grained control over logging output, particularly useful for detailed execution flow tracking during development and debugging.

  • Added "trace" to the LogLevel union type
  • Added Logger.trace() method for logging trace-level messages
  • The complete severity hierarchy is now: trace < debug < info < warning < error < fatal

Enhanced File Sink Performance

File sinks now support configurable buffering, significantly improving write performance for high-volume logging scenarios.

  • Added bufferSize option (default: 8192 characters) to control write buffering behavior
  • Added flushInterval option (default: 5000ms) for automatic time-based buffer flushing
  • Set bufferSize to 0 for immediate writes without buffering
  • Set flushInterval to 0 to disable time-based flushing
  • Buffer contents are automatically flushed when the sink is disposed

These options are available for both getFileSink() and getRotatingFileSink() functions.

Syslog Support

The new @logtape/syslog package enables sending log messages to syslog servers using the RFC 5424 format.

  • Support for both UDP and TCP protocols
  • All standard RFC 5424 facilities (kern, user, mail, daemon, local07, etc.)
  • Automatic priority calculation based on log levels
  • Structured data support for log record properties
  • Cross-runtime compatibility with Deno, Node.js, and Bun
  • Configurable connection timeouts, custom hostnames, and application names

Logger Method Alias

Added Logger.warning() as an alias for Logger.warn() to ensure consistency with the LogLevel type definition. This change addresses the naming mismatch where the LogLevel union type uses "warning" while the logger method was named warn(), making metaprogramming and dynamic method invocation more straightforward.

Unified Package Releases

Starting with version 0.12.0, all LogTape packages including @logtape/otel, @logtape/sentry, and @logtape/syslog share the same version number and are released together. This ensures compatibility between packages and simplifies version management for users.

Improved Build Infrastructure

LogTape has migrated from dnt to tsdown for npm package bundling. tsdown is a library-focused bundler built on top of Rolldown, a Rust-based bundler that powers the next generation of Vite. Unlike general-purpose bundlers, tsdown is specifically optimized for building TypeScript and JavaScript libraries with minimal configuration. This change brings several benefits:

  • Elimination of bundler warnings in Webpack, Vite, and other build tools
  • Improved compatibility with modern JavaScript toolchains
  • Better tree-shaking support
  • Cleaner package output
  • Faster build times through Rust-based performance optimizations

Migration Guide

Updating to Trace Level

If you have code that relies on debug being the lowest severity level, you may need to update your log level configurations:

// Before
{ lowestLevel: "debug" }  // This was the most verbose setting

// After
{ lowestLevel: "trace" }  // Now includes trace messages

Leveraging Buffer Configuration

To optimize file sink performance in high-throughput scenarios:

getFileSink("app.log", {
  bufferSize: 16384,      // Larger buffer for better performance
  flushInterval: 10_000    // Flush every 10 seconds
})

Installation

LogTape 0.12.0 is available on JSR and npm:

deno add jsr:@logtape/logtape  # Deno
npm  add     @logtape/logtape  # npm
pnpm add     @logtape/logtape  # pnpm
yarn add     @logtape/logtape  # yarn
bun  add     @logtape/logtape  # Bun

For the syslog sink:

deno add jsr:@logtape/syslog  # Deno
npm  add     @logtape/syslog  # npm
pnpm add     @logtape/syslog  # pnpm
yarn add     @logtape/syslog  # yarn
bun  add     @logtape/syslog  # Bun

Acknowledgments

We thank all contributors who helped make this release possible, including those who reported issues, submitted pull requests, and provided feedback.

For the complete list of changes, please refer to the changelog.

logtape.org

LogTape changelog | LogTape

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

@cheeaun@mastodon.social

So cool to see KakaoMap has real time train location on the map 🤩

Screen recording of real time train location on KakaoMap
ALT text

Screen recording of real time train location on KakaoMap

@skiptools@mas.to

Xcode 26's API files have a combined 26,000 lines of diffs, but most is noise. We'll take the meaningful bits, use an LLM to generate stubs, then begin implementing important APIs for ! Of course your Swift will get the updates to Foundation, etc for free

@silverpill@mitra.social

Mitra v4.4.0 supports verification of RFC-9421 HTTP signatures. It is known to be compatible with @fedify, but I haven't tested it with Mastodon or Streams yet.
Outgoing requests are still signed according to the draft-cavage. I don't plan to implement double-knocking, but something like FEP-844e could be supported in the future, though this is not urgent.

My implementation of a parser is available in APx library.

@rfc9421 #rfc9421

RE: https://mitra.social/objects/01974018-9b83-c1ec-a109-24a72a579235

mitra.social

#Mitra v4.4.0 - Post by @mitra

Federated social network

@linea@hackers.pub

확실히 이전보다 해커스펍 타임라인 속도가 올라갔다. 사람이 늘긴 늘은 거 같아요.

@wakest@app.wafrn.net · Reply to wakest

So I remembered that @hongminhee recently added syntax highlighting to https://hackers.pub and had told me that it's done by just adding colors to the HTML markup of the posts so I was curious if it also ingested colors from outside and it DOES: so Hackers's Pub supports Wafrn's silly ass color posts!

A screenshot of hackers pub showing colored text on wafrn inside hackers pub
ALT text

A screenshot of hackers pub showing colored text on wafrn inside hackers pub

@hongminhee@hollo.social
@fediversereport@mastodon.social

Fediverse Report - This week's fediverse news:

- @fediforum happened, with a ton of demos, sessions and keynotes
- @bonfire gets close to a formal 1.0 release, and is already available for usage
- @anewsocial announces Bounce, a tool to migrate your social graph from to
- shutdown of a lemmy server provides opportunity for @piefedadmin

and much more!

read at: fediversereport.com/fediverse-

@cheeaun@mastodon.social · Reply to Chee Aun 🤔
Screenshot of Icon Composer displaying the Phanpy icon with a translucent, glass-like effect. The interface shows layer groups on the left and color, liquid glass, and composition settings on the right.
ALT text

Screenshot of Icon Composer displaying the Phanpy icon with a translucent, glass-like effect. The interface shows layer groups on the left and color, liquid glass, and composition settings on the right.

Phanpy icon with "Liquid Glass" effect.
ALT text

Phanpy icon with "Liquid Glass" effect.

Phanpy icon with "Liquid Glass" effect, Dark mode.
ALT text

Phanpy icon with "Liquid Glass" effect, Dark mode.

Phanpy icon with "Liquid Glass" effect, Mono mode.
ALT text

Phanpy icon with "Liquid Glass" effect, Mono mode.