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!
安寧하세요! 저는 서울에 살고 있는 30代 後半의 오픈 소스 소프트웨어 엔지니어 洪民憙입니다. 兩性愛者(bisexual)이자 논바이너리(non-binary)이며, 自由·오픈 소스 소프트웨어(F/OSS)와 聯合宇宙(fediverse)의 熱烈한 支持者이기도 합니다.
STF(@sovtechfund)의 支援을 받아 TypeScript用 ActivityPub 서버 프레임워크 @fedify 開發에 專業으로 任하고 있습니다. 그 外에도 싱글 유저用 ActivityPub 마이크로블로그 @hollo, ActivityPub 봇 프레임워크 @botkit, 소프트웨어 開發者를 위한 聯合宇宙 플랫폼 Hackers' Pub, JavaScript·TypeScript用 로깅 라이브러리 LogTape 等의 製作者이기도 합니다.
東아시아 言語(이른바 CJK)와 Unicode에도 關心이 많습니다. 이 計定에서는 主로 英語로 포스팅하지만, 때때로 日本語나 國漢文混用體 韓國語로도 씁니다. 聯合宇宙에 오게 된 動機 中 하나가 바로 國漢文混用體로 글을 쓰고 싶었기 때문이기도 하고요. 韓國語, 英語, 日本語, 아니면 漢文으로도 말을 걸어주세요!
LogTape is a zero-dependency logging library for JavaScript and TypeScript that works across all runtimes.
We're excited to announce the release of LogTape 0.11.0, which introduces significant enhancements to structured logging capabilities and adds a new JSON Lines formatter for better log processing.
New features and enhancements
Enhanced structured logging
LogTape 0.11.0 brings major improvements to structured logging, making it easier and more flexible to work with structured data in your logs.
Direct object logging
You can now log structured data directly by passing an object as the first argument to any log method:
logger.info({ userId: 123456, username: "johndoe", loginTime: new Date(),});
This creates a log entry with the object properties as structured fields, making your logs more machine-readable and searchable.
Universal property interpolation with {*}
A new special placeholder {*} allows you to interpolate all properties from your structured data at once:
logger.info("User logged in with properties {*}", { userId: 123456, username: "johndoe", loginTime: new Date(),});
This is particularly useful when you want to include all available context without explicitly naming each property in your message template.
Streamlined logging methods
All logging methods (debug, info, warn, error, fatal) now support the new object-first syntax as a convenient shorthand for structured logging with the {*} placeholder.
JSON Lines formatter
LogTape now includes built-in support for JSON Lines (also known as JSONL or NDJSON) format, a popular choice for structured logging in modern applications:
import { jsonLinesFormatter } from "@logtape/logtape";import { getFileSink } from "@logtape/file";await configure({ sinks: { jsonl: getFileSink("app.jsonl", { formatter: jsonLinesFormatter }), }, // ... rest of configuration});
The JSON Lines formatter outputs each log record as a JSON object on a separate line, making it ideal for log aggregation systems and analysis tools.
It's been a while since we released a new minor version of #Hollo. I'm currently considering the timing for releasing Hollo 0.6.0. There are still a few changes left to implement, but once those are wrapped up, we should be able to release Hollo 0.6.0 soon!
If you're on the fence about which driver to choose for #Fedify's message queue, here's a benchmark that just came out. In addition to no queue, we compare 5 drivers, for a total of 11 setups:
@thisismissem Here's the benchmark, and while it contains some questionable results, the overall conclusion is as following:
• Response times are much faster with queues than without. • Overall throughput is better without queues. • However, some queue setups can achieve throughput close to that of no queue.
This benchmark assumes communication within a single node, so the effect of queues may be greater in real-world networks.
GPL은 외부 릴리즈시 추가로 작성하거나 고친 소스 코드의 동일 조건 공개를 강제하는 특성으로 인해, 초기에 사회주의-공산주의라는 오해를 많이 받기는 했었음. 네가 썼다면, 네가 작성한 코드도 공개하라는 공유주의 라이센스니까.
그러나 그러한 공개 강제는 GPL을 일종의 플랫폼으로 만드는 효과 - GPL을 쓰면 GPL이고 아니면 처음부터 아니어야 함 - 가 있어서, 리눅스가 BSD를 제치고, 윈도와 유닉스를 넘어 인터넷과 세계의 커널이 되는 결정적 요인이 됩니다. 그리고 수많은 기업들이 이를 기반으로 자라나죠.
GPL은 자본주의 사회에서도 매우 훌륭하게 기능하고 있습니다. 이제 와서 GPL이 공산주의라고 하는 사람은 거의 없죠.
C를 굳이 비판하고 싶다면? C가 유사한 상황에서 꾸준히 편향되게 특정 사람(또는 집단)만 비판해왔는지를 먼저 살펴야 하지 않을까.
그런데, C의 언행이 꾸준히 편향되었음을 알아냈다 하더라도 그 자체를 비판할 수는 없다. 사람은 누구나 편향되어 있고 '편향 없음(소위 중립)'이라는 건 아주 특별한 상황이 아닌 이상 지향할만한 좋은 가치도 아니기 때문이다. 스스로가 어떤 편향을 얼마나 가지고 있는지 자각하고 있는지 여부, 그러한 편향을 공연히 인정하는지 여부에만 차이가 있을 뿐이다.
따라서 C에 대한 그나마 가능한 비판의 범주는 "편향이 있는데 없는 척을 한다(즉, 거짓말쟁이다)" 또는 "편향이 있는데 자각을 못한다(즉, 어리석다)"는 정도가 아닐까.
🎉 #Cloudflare#Workers support is now complete! After implementing the test infrastructure, core module, examples, and comprehensive documentation, #Fedify can now run on Cloudflare Workers.
This will be included in the upcoming Fedify 1.6 stable release. Thank you to everyone who requested this feature and provided feedback throughout the implementation!