洪 民憙 (Hong Minhee)'s Avatar

洪 民憙 (Hong Minhee)

@hongminhee.org

國漢文混用맨. https://hongminhee.org/

286
Followers
207
Following
127
Posts
19.04.2023
Joined
Posts Following

Latest posts by 洪 民憙 (Hong Minhee) @hongminhee.org

Preview
dahlia/optique Type-safe combinatorial CLI parser for TypeScript. Contribute to dahlia/optique development by creating an account on GitHub.

#Optique 1.0.0 preview: runWithConfig() is gone—run() now accepts source contexts. Meta command config gets independent command/option sub-configs. bindConfig() gains config-file metadata for path resolution.

#TypeScript #CLI

25.02.2026 08:32 👍 2 🔁 0 💬 0 📌 0

I always appreciate your open source contributions, not just to Fedify or Hollo, but to the social web as a whole!

22.02.2026 12:32 👍 1 🔁 0 💬 0 📌 0

The really cool thing about this new architecture is that it can enable Client to Server architecture for AP with fedify (maybe vocab packages could be used in the browser too!)

22.02.2026 12:30 👍 9 🔁 5 💬 1 📌 0
Preview
Fedify 2.0.0: Modular architecture, debug dashboard, and relay support · fedify-dev fedify · Discussion #580 Fedify is a TypeScript framework for building ActivityPub servers that participate in the fediverse. It reduces the complexity and boilerplate typically required for ActivityPub implementation whil...

Fedify 2.0.0—the biggest release yet!

• Modular package architecture
• Real-time debug dashboard
• ActivityPub relay support
• Ordered message delivery
• Permanent failure handling

Breaking changes included—see the migration guide before upgrading. Full release notes are on GitHub.

22.02.2026 12:12 👍 16 🔁 3 💬 1 📌 0

fedi.blue 라는 도메인을 샀는데 뭔가 아이디어가 안 떠오르네요... 블스랑 연합우주 모두에서 사용 가능한 앱이었으면 좋겠는데... 혹시 아이디어가 있으신 분은 편하게 말씀해주시면 감사하겠습니당 알티도 감사해요!

17.02.2026 20:35 👍 3 🔁 8 💬 0 📌 0
Preview
Why Optique? | Optique Discover how Optique brings functional composition to TypeScript CLI development, enabling truly reusable parser components that other libraries can't match through configuration-based approaches.

Interesting to see combinator conditions on #typescript for CLI.

This is something that's hard to do in any CLI library. Easier with typed languages, but still can be complex. Very cool to see with #optique and their approach leveraging the type system. 😎

15.02.2026 16:50 👍 2 🔁 1 💬 0 📌 0
Preview
Optique 0.10.0: Runtime context, config files, man pages, and network parsers · dahlia optique · Discussion #108 We're excited to announce Optique 0.10.0, the largest release yet! This release introduces a runtime context system for composing external data sources, a config file integration package, man page ...

Optique 0.10.0 is out—the largest release yet for this type-safe TypeScript CLI parser.

Highlights: runtime context system, config file integration, man page generation, inter-option dependencies, 11 network value parsers.

Last pre-release before 1.0.0.

15.02.2026 14:02 👍 2 🔁 0 💬 0 📌 0

We have the pleasure of having @hongminhee.org who will give a presentation about @fedify.hollo.social.ap.brid.gy "an opinionated #ActivityPub framework for TypeScript that handles the protocol plumbing"

It is an open free event and everyone is welcome!

24.01.2026 22:15 👍 4 🔁 2 💬 0 📌 0
F/OSSの唯物史観——LLMを拒絶するのではなく、取り戻すべきだ

AI企業がF/OSSコードでLLMを訓練することを止めるのではなく、訓練したモデルを公開するよう要求すべきだと思います。

撤退ではなく、再専有。GPLがそうだったように。

訓練コピーレフトについて書きました:「F/OSSの唯物史観——LLMを拒絶するのではなく、取り戻すべきだ」

16.01.2026 06:23 👍 0 🔁 0 💬 0 📌 0
Histomat of F/OSS: We should reclaim LLMs, not reject them

Hot take: We shouldn't block AI companies from training on our F/OSS code.

We should require them to free the models they train.

That's not naïve idealism—it's the same strategy that built GNU/Linux. Why training copyleft might be our GPL moment:

16.01.2026 06:14 👍 3 🔁 1 💬 1 📌 0
Preview
LogTape 2.0.0: Dynamic logging and external configuration · dahlia logtape · Discussion #133 LogTape is a logging library for JavaScript and TypeScript that works across Deno, Node.js, Bun, and browsers. It's designed around structured logging with zero dependencies and flexible configurat...

LogTape 2.0.0 released! A zero-dependency logging library for JavaScript/TypeScript.

New in 2.0: lazy() for dynamic context values, config from JSON/YAML files, direct Error logging, async lazy evaluation, time-based log rotation, Elysia integration, and more.

15.01.2026 08:27 👍 1 🔁 0 💬 0 📌 0
Preview
I've spent a long time asking … I've spent a long time asking myself why open source matters so much to me, why I keep coming back to it. I once joined a company purely because they promised I could do open source full-time (it didn...

Why I do open source

14.01.2026 06:21 👍 3 🔁 0 💬 0 📌 0
Preview
Hongdown 0.2.0: WebAssembly support and smart typography · dahlia hongdown · Discussion #10 We're excited to announce Hongdown 0.2.0! This release brings major new features including WebAssembly support, smart heading capitalization, typographic punctuation transformation, and external co...

Hongdown 0.2.0 released! Hongdown is an opinionated Markdown formatter written in Rust, now available as a WebAssembly library for Node.js, Bun, Deno, and browsers.

New: smart sentence case for headings, SmartyPants-style typography, external code formatters, and directory batch formatting.

13.01.2026 10:34 👍 0 🔁 0 💬 0 📌 0

if people no longer read the code, API is no longer targeting humans, is there still a need for "good API design"? is it still worth the effort to figure out what would be the best for users, instead of the best of ai to understand/use? I don't know.

13.01.2026 08:12 👍 48 🔁 6 💬 8 📌 1
Preview
CLIの補完は、入力済みのオプションを考慮してほしい

CLIツールを作ってると、「--repoで指定したリポジトリのブランチだけ補完候補に出したい」みたいな場面があるんですよね。でも普通のCLIパーサーだと各オプションが独立してて、これが意外と難しい。

TypeScript向け型安全CLIパーサーOptiqueで、この問題を解決する仕組みを作ったので、記事にまとめました。

13.01.2026 05:42 👍 1 🔁 0 💬 0 📌 0
Preview
Your CLI's completion should know what options you've already typed Consider Git's -C option: git -C /path/to/repo checkout <TAB> When you hit Tab, Git completes branch names from /path/to/repo, not yourcurrent directory. The completion is context-aware—it depends o...

When building CLI tools, shell completion usually treats each option in isolation. But sometimes valid values for one option depend on another—like branch names depending on which repository you're targeting.

Wrote about how I solved this in Optique, a type-safe CLI parser for TypeScript.

13.01.2026 05:19 👍 3 🔁 0 💬 1 📌 0
LogTape Simple logging library with zero dependencies for Deno, Node.js, Bun, browsers, and edge functions

Une lib de logging pour JavaScript qui ambitionne d'ajouter du logging facilement à vos packages. Ensuite, libre à l'utilisateur de votre package de décider s'il veut activer le logging ou pas.

Ça me fait un peu penser à log4j pour Java 🤔

🔗 https://logtape.org/

#JavaScript #lib #log

31.08.2025 08:34 👍 1 🔁 1 💬 0 📌 0
Preview
Support for inter-option dependencies in value parsers · Issue #74 · dahlia/optique When building CLI tools that mirror Git's interface, it's common to have a global option like -C <path> that changes the working directory for subsequent operations. Ideally, value parsers (like gi...

How do you make one CLI option's value affect another's validation and completion? Like `git -C <path> branch <TAB>` completing branches from that path.

I think I've found a nice solution for Optique: topologically sort dependencies between value parsers.

12.01.2026 13:09 👍 0 🔁 0 💬 0 📌 0
Preview
GitHub - dahlia/hongdown: A Markdown formatter that enforces Hong Minhee's Markdown style conventions A Markdown formatter that enforces Hong Minhee's Markdown style conventions - dahlia/hongdown

Turns out writing markdownlint rules was the easy part. Actually *fixing* all those lint errors manually? That was unbearable.

So I did what any reasonable person would do: rewrote the whole thing as an auto-formatter. Meet Hongdown—now you can enforce my peculiar Markdown style without the pain.

10.01.2026 08:55 👍 1 🔁 0 💬 0 📌 0
The implicit theory behind the open social web was that platform quality would determine outcomes. Build something that’s better, and in combination with the incumbent getting worse, this would lead to such difference in quality, user experience and safety that at some point people would switch from X to alternatives like Mastodon or Bluesky. This theory held up for a while in 2023 and 2024. In 2025 it started to falter, as Musk aligned himself with Trump, the signup waves to the alternative platforms effectively stopped. In early 2026, this theory is now really over, because X has fundamentally changed. Mastodon and Bluesky are not in competition anymore with the platform X, because X has changed. It changed from being a platform to the power structure for the neo-royalty, with the public square shambling along as a zombie, animated by everyone who still treats X like it’s 2015.

You cannot out-compete ‘where the ruling faction radicalizes and coordinates’ by having better moderation policies or algorithmic choice. X is not a platform problem anymore, it is a power problem, and building a different platform does not solve the power problem.

The implicit theory behind the open social web was that platform quality would determine outcomes. Build something that’s better, and in combination with the incumbent getting worse, this would lead to such difference in quality, user experience and safety that at some point people would switch from X to alternatives like Mastodon or Bluesky. This theory held up for a while in 2023 and 2024. In 2025 it started to falter, as Musk aligned himself with Trump, the signup waves to the alternative platforms effectively stopped. In early 2026, this theory is now really over, because X has fundamentally changed. Mastodon and Bluesky are not in competition anymore with the platform X, because X has changed. It changed from being a platform to the power structure for the neo-royalty, with the public square shambling along as a zombie, animated by everyone who still treats X like it’s 2015. You cannot out-compete ‘where the ruling faction radicalizes and coordinates’ by having better moderation policies or algorithmic choice. X is not a platform problem anymore, it is a power problem, and building a different platform does not solve the power problem.

New from me: X is A Power Problem, Not a Platform Problem

https://connectedplaces.online/reports/a-power-problem-not-a-platform-problem/

09.01.2026 15:15 👍 12 🔁 21 💬 2 📌 1
Preview
LogTape & Sentry - Trace-Connected Structured Logging Learn to add production-grade logging and error monitoring to your Next.js application with LogTape and Sentry.

Sentry just dropped a blog post on “Trace-connected structured logging with LogTape.”

It's incredibly rewarding to see the library getting this kind of recognition from the industry leaders in observability. A huge milestone for the project.

09.01.2026 08:44 👍 0 🔁 0 💬 0 📌 0
Preview
GitHub - dahlia/markdownlint-rules: Custom markdownlint rules for Hong Minhee's Markdown style Custom markdownlint rules for Hong Minhee's Markdown style - dahlia/markdownlint-rules

I finally gave in and wrote my own markdownlint rules to enforce my peculiar and stubborn Markdown style. Probably no one else will ever need these, but I've published them as open source anyway.

06.01.2026 09:29 👍 1 🔁 0 💬 1 📌 0
Preview
Building CLI apps with TypeScript in 2026 We've all been there. You start a quick TypeScript CLI with process.argv.slice(2), add a couple of options, and before you know it you're drowning in if/else blocks and parseInt calls. It works, until...

Wrote a tutorial on building CLI apps with Optique, a TypeScript CLI parser I've been working on. If you've ever wanted discriminated unions from your argument parser, this might interest you.

06.01.2026 04:31 👍 3 🔁 0 💬 0 📌 0
Preview
Optique 0.9.0: Async parsers and Git reference validation · dahlia optique · Discussion #75 We're excited to announce Optique 0.9.0! This release brings two major features: full async/await support for parsers and a new @optique/git package for validating Git references against actual rep...

Optique 0.9.0 released! Two big features:

• Async parsers: validate against databases, APIs, or filesystems with full type safety
• New @optique/git package: validate branch names, tags, and commits against real Git repos

All backward compatible. Existing code works unchanged.

05.01.2026 16:59 👍 1 🔁 0 💬 1 📌 0
Preview
TypeScriptで型安全な同期・非同期モード切り替えを実装する

複数のパーサーを合成するとき、一つでも非同期なら結果も非同期になる——これをTypeScriptの型レベルで表現するのが意外と難しかった。Optiqueでの設計過程を書きました。

05.01.2026 14:07 👍 1 🔁 0 💬 0 📌 0
Preview
2026年版:JavaScript/TypeScriptのロギング入門 本番環境で障害が発生したとき、手がかりになるのは結局ログだけだった——という経験は、多くのエンジニアが持っているのではないでしょうか。ところが、開発中に書き散らしたconsole.logは肝心なときに役に立たないことが多いものです。「ここ通った」「動いた」といったメッセージや、巨大なオブジェクトがそのまま出力されているだけでは、原因特定は困難です。かといって、本格的なロギングライブラリを導入するの

今日のZennトレンド

2026年版:JavaScript/TypeScriptのロギング入門
この記事は、JavaScript/TypeScriptにおける効果的なロギング方法を解説しています。
console.logの限界を指摘し、軽量で多機能なロギングライブラリLogTapeの導入を提案。
ログレベル、カテゴリ、シンク、構造化ログといったロギングの基本概念を説明し、LogTapeを用いた具体的な設定方法や活用例を紹介しています。
本番環境での障害対応や効率的なデバッグに役立つロギング環境構築のヒントが得られます。

02.01.2026 21:20 👍 3 🔁 1 💬 0 📌 0
Preview
2026年版:JavaScript/TypeScriptのロギング入門

https://zenn.dev/hongminhee/articles/e0d19ae2c4e042
本番環境での障害時に役立つログ構築について解説します。
console.logの限界を整理し、実用的なロギング環境の構築方法を紹介します。
LogTapeという依存ゼロで軽量なロギングライブラリを使用します。

03.01.2026 00:18 👍 1 🔁 1 💬 0 📌 0
Preview
Designing type-safe sync/async mode support in TypeScript I recently added sync/async mode support to Optique, a type-safe CLI parserfor TypeScript. It turned out to be one of the trickier features I'veimplemented—the object() combinator alone needed to com...

Wrote about designing type-safe sync/async mode support in TypeScript. Making object({ sync: syncParser, async: asyncParser }) automatically infer as async turned out to be trickier than expected.

02.01.2026 06:02 👍 2 🔁 0 💬 1 📌 0
Preview
2026年版:JavaScript/TypeScriptのロギング入門

console.log()だけだと本番で困る、でも本格的なロギングは設定が面倒——という方向けに、ちょうどいい落としどころを探る記事を書きました。

01.01.2026 15:55 👍 0 🔁 0 💬 0 📌 0
Preview
Logging in Node.js (or Deno or Bun or edge functions) in 2026 It's 2 AM. Something is wrong in production. Users are complaining, but you're not sure what's happening—your only clues are a handful of console.log statements you sprinkled around during development...

I wrote about setting up logging that's more useful than console.log() but doesn't require a Ph.D. in configuration. Covers categories, structured logging, request tracing, and production tips.

01.01.2026 15:31 👍 1 🔁 1 💬 1 📌 0