洪 民憙 (Hong Minhee)
@hongminhee.org
國漢文混用맨. https://hongminhee.org/
Pinned
洪 民憙 (Hong Minhee)
@hongminhee.org
· Dec 25
I use fediverse more than Bluesky, but my fediverse account can also be followed on Bluesky via Bridgy Fed, so I think you might want to follow it: @hongminhee.hollo.social.ap.brid.gy.
Reposted by 洪 民憙 (Hong Minhee)
Cross-runtime email library with a unified API
November 7, 2025 at 8:01 AM
Cross-runtime email library with a unified API
Reposted by 洪 民憙 (Hong Minhee)
AI SDK + VoyageAI + logtape + p-retry
Simple & Beautiful 💕
Simple & Beautiful 💕
November 4, 2025 at 7:46 AM
AI SDK + VoyageAI + logtape + p-retry
Simple & Beautiful 💕
Simple & Beautiful 💕
Reposted by 洪 民憙 (Hong Minhee)
Optique 0.6.0: Shell completion support for type-safe CLI parsers hackers.pub/@hongminhee/...
Optique 0.6.0: Shell completion support for type-safe CLI parsers
Optique 0.6.0 introduces intelligent shell completion to type-safe command-line applications, supporting Bash, zsh, fish, PowerShell, and Nushell. Unlike traditional CLI frameworks, Optique leverages ...
hackers.pub
October 6, 2025 at 9:46 AM
Optique 0.6.0: Shell completion support for type-safe CLI parsers hackers.pub/@hongminhee/...
Reposted by 洪 民憙 (Hong Minhee)
For a CLI parser library, generating help is a given, why not completion script generation? Argsparse, climate & optparse do (only for bash, zsh & fish).
Well, if you're writing in TypeScript, Optique now has one, and it covers bash, zsh, fish, PowerShell, and Nushell!
optique.dev/concepts/com...
Well, if you're writing in TypeScript, Optique now has one, and it covers bash, zsh, fish, PowerShell, and Nushell!
optique.dev/concepts/com...
Shell completion | Optique
Learn how to add shell completion support to your CLI applications using Optique's built-in completion system. Covers Bash and zsh integration, custom suggestions, and native file completion.
optique.dev
October 3, 2025 at 4:21 AM
For a CLI parser library, generating help is a given, why not completion script generation? Argsparse, climate & optparse do (only for bash, zsh & fish).
Well, if you're writing in TypeScript, Optique now has one, and it covers bash, zsh, fish, PowerShell, and Nushell!
optique.dev/concepts/com...
Well, if you're writing in TypeScript, Optique now has one, and it covers bash, zsh, fish, PowerShell, and Nushell!
optique.dev/concepts/com...
Optique 0.6.0 is here! Bringing intelligent shell completion to type-safe TypeScript CLI parsers.
Press Tab, get suggestions. No duplicate definitions. Just works with Bash, zsh, fish, PowerShell & Nushell.
Your parsers stay the single source of truth.
Press Tab, get suggestions. No duplicate definitions. Just works with Bash, zsh, fish, PowerShell & Nushell.
Your parsers stay the single source of truth.
Optique 0.6.0: Shell completion support for type-safe CLI parsers · dahlia optique · Discussion #34
Optique 0.6.0 is here, bringing intelligent shell completion to your type-safe command-line applications. This release introduces built-in completion support for Bash, zsh, fish, PowerShell, and Nu...
github.com
October 2, 2025 at 10:50 AM
Optique 0.6.0 is here! Bringing intelligent shell completion to type-safe TypeScript CLI parsers.
Press Tab, get suggestions. No duplicate definitions. Just works with Bash, zsh, fish, PowerShell & Nushell.
Your parsers stay the single source of truth.
Press Tab, get suggestions. No duplicate definitions. Just works with Bash, zsh, fish, PowerShell & Nushell.
Your parsers stay the single source of truth.
Reposted by 洪 民憙 (Hong Minhee)
logging library for JavaScript and TypeScript with zero dependencies, works in any runtime
September 20, 2025 at 11:32 AM
logging library for JavaScript and TypeScript with zero dependencies, works in any runtime
Optique 0.5.0 is out! Enhanced error handling and message customization for TypeScript CLI parsing.
• Fully customizable error messages
• Automatic error conversion for withDefault callbacks
• Better help text and module organization
• Fully customizable error messages
• Automatic error conversion for withDefault callbacks
• Better help text and module organization
Optique 0.5.0: Enhanced error handling and message customization · dahlia optique · Discussion #28
We're pleased to announce the release of Optique 0.5.0, which brings significant improvements to error handling, help text generation, and overall developer experience. This release maintains full ...
github.com
September 23, 2025 at 8:37 AM
Optique 0.5.0 is out! Enhanced error handling and message customization for TypeScript CLI parsing.
• Fully customizable error messages
• Automatic error conversion for withDefault callbacks
• Better help text and module organization
• Fully customizable error messages
• Automatic error conversion for withDefault callbacks
• Better help text and module organization
Reposted by 洪 民憙 (Hong Minhee)
hackers.pub/@hongminhee/... 이게 요즘 프로개발자 선생님들의 표준화된 방식인데 코알못 + 설계가 흐리멍덩한 상태에서 완성하는 사람들은 걍 하나하나 대화하고 복붙하고 이게아닝가…. 해야뎌….. 테스트 자동화는 사치여…..ㅋㅋㅋㅋㅋ
내가 LLM과 함께 코딩하는 방식
이 글은 저자가 LLM(Large Language Model)을 활용하여 코딩하는 방법에 대한 개인적인 경험과 팁을 공유합니다. LLM 코딩 에이전트 사용 시 맥락 제공의 중요성을 강조하며, Claude Code 모델을 선호하는 이유와 그 장단점을 설명합니다. 세부적인 지시를 위해 GitHub 이슈를 활용하고, 설계는 사람이, 구현은 LLM이 담당하는 역할...
hackers.pub
September 19, 2025 at 9:55 AM
hackers.pub/@hongminhee/... 이게 요즘 프로개발자 선생님들의 표준화된 방식인데 코알못 + 설계가 흐리멍덩한 상태에서 완성하는 사람들은 걍 하나하나 대화하고 복붙하고 이게아닝가…. 해야뎌….. 테스트 자동화는 사치여…..ㅋㅋㅋㅋㅋ
Reposted by 洪 民憙 (Hong Minhee)
Totally worth reading if you're building CLI tools. Bonus for TypeScript!
https://hackers.pub/@hongminhee/2025/stop-writing-cli-validation-parse-it-right-the-first-time
https://hackers.pub/@hongminhee/2025/stop-writing-cli-validation-parse-it-right-the-first-time
Stop writing CLI validation. Parse it right the first time.
This post introduces Optique, a new library created to address the pervasive problem of repetitive and often messy validation code in CLI tools. The author was motivated by the observation that nearly every CLI tool reinvents the wheel with similar validation patterns for dependent options, mutually exclusive options, and environment-specific requirements. Optique leverages parser combinators and TypeScript
hackers.pub
September 17, 2025 at 9:46 AM
Totally worth reading if you're building CLI tools. Bonus for TypeScript!
https://hackers.pub/@hongminhee/2025/stop-writing-cli-validation-parse-it-right-the-first-time
https://hackers.pub/@hongminhee/2025/stop-writing-cli-validation-parse-it-right-the-first-time
Reposted by 洪 民憙 (Hong Minhee)
연합우주에 다른 계정을 만들었는데 자주 쓸지 모르겠네요 hackers.pub/@eatch
잇창명 EatChangmyeong💕🐱
hackers.pub
September 17, 2025 at 8:56 AM
연합우주에 다른 계정을 만들었는데 자주 쓸지 모르겠네요 hackers.pub/@eatch
Reposted by 洪 民憙 (Hong Minhee)
Ooooh, it works!! This is a client talking to an authorization server built with the `@atproto/oauth-provider` package standalone.
I've implemented just enough to make this proof of concept work.
I've implemented just enough to make this proof of concept work.
September 17, 2025 at 5:24 AM
Ooooh, it works!! This is a client talking to an authorization server built with the `@atproto/oauth-provider` package standalone.
I've implemented just enough to make this proof of concept work.
I've implemented just enough to make this proof of concept work.
Reposted by 洪 民憙 (Hong Minhee)
optique.dev seems interesting for cli opt parsing
Optique
Type-safe combinatorial CLI parser for TypeScript
optique.dev
September 16, 2025 at 2:24 PM
optique.dev seems interesting for cli opt parsing
Reposted by 洪 民憙 (Hong Minhee)
So here's where I'm at with a custom "pds"-like thing that I'm building, where it's not actually using much of the PDS code from `@atproto/pds` but is actually just the OAuthProvider with a bare-bones implementation of the OAuthStore.
(Sorry, I don't have subtitles)
(Sorry, I don't have subtitles)
September 15, 2025 at 1:59 AM
So here's where I'm at with a custom "pds"-like thing that I'm building, where it's not actually using much of the PDS code from `@atproto/pds` but is actually just the OAuthProvider with a bare-bones implementation of the OAuthStore.
(Sorry, I don't have subtitles)
(Sorry, I don't have subtitles)
Reposted by 洪 民憙 (Hong Minhee)
今日のZennトレンド
TypeScriptの型推論でCLIバリデーションをなくせた話
CLIツール開発では、オプションの複雑な依存関係や排他条件をチェックするバリデーションコードが繰り返し書かれ、非効率的でバグの原因にもなりやすい。
筆者はこの課題を解決するため「Optique」を開発。
TypeScriptの型推論を最大限活用し、CLIオプションの構造や制約を型のレベルで宣言的に記述できるようにした。
これにより、ランタイムでのバリデーションを大幅に削減し、コンパイル時にバグを早期発見。
開発効率とコードの信頼性を向上させるアプローチを提案する。
TypeScriptの型推論でCLIバリデーションをなくせた話
CLIツール開発では、オプションの複雑な依存関係や排他条件をチェックするバリデーションコードが繰り返し書かれ、非効率的でバグの原因にもなりやすい。
筆者はこの課題を解決するため「Optique」を開発。
TypeScriptの型推論を最大限活用し、CLIオプションの構造や制約を型のレベルで宣言的に記述できるようにした。
これにより、ランタイムでのバリデーションを大幅に削減し、コンパイル時にバグを早期発見。
開発効率とコードの信頼性を向上させるアプローチを提案する。
TypeScriptの型推論でCLIバリデーションをなくせた話
CLIツールを作っていると、必ずと言っていいほど書くことになるバリデーションコード。TypeScriptの型推論を活用したら、このコードをほぼ不要にできたお話をします。きっかけは、いろんなプロジェクトのコードを読んでいて気づいたことでした。どのCLIツールにも、似たようなバリデーションコードが含まれているんです。例えばこんな感じです:if (!opts.server && opts
zenn.dev
September 12, 2025 at 9:14 AM
今日のZennトレンド
TypeScriptの型推論でCLIバリデーションをなくせた話
CLIツール開発では、オプションの複雑な依存関係や排他条件をチェックするバリデーションコードが繰り返し書かれ、非効率的でバグの原因にもなりやすい。
筆者はこの課題を解決するため「Optique」を開発。
TypeScriptの型推論を最大限活用し、CLIオプションの構造や制約を型のレベルで宣言的に記述できるようにした。
これにより、ランタイムでのバリデーションを大幅に削減し、コンパイル時にバグを早期発見。
開発効率とコードの信頼性を向上させるアプローチを提案する。
TypeScriptの型推論でCLIバリデーションをなくせた話
CLIツール開発では、オプションの複雑な依存関係や排他条件をチェックするバリデーションコードが繰り返し書かれ、非効率的でバグの原因にもなりやすい。
筆者はこの課題を解決するため「Optique」を開発。
TypeScriptの型推論を最大限活用し、CLIオプションの構造や制約を型のレベルで宣言的に記述できるようにした。
これにより、ランタイムでのバリデーションを大幅に削減し、コンパイル時にバグを早期発見。
開発効率とコードの信頼性を向上させるアプローチを提案する。
Reposted by 洪 民憙 (Hong Minhee)
今日のZennトレンド
TypeScriptの型推論でCLIバリデーションをなくせた話
この記事は、CLIツール開発で頻繁に書かれるバリデーションコードの非効率性を指摘します。
「バリデーションせずパースせよ」という原則に基づき、TypeScriptの型推論とパーサーコンビネータライブラリ「Optique」を紹介。
これにより、CLI引数を最初から有効な型としてパースし、従来のバリデーションコードをほぼ不要にできると提唱します。
結果として、コード量が減り、リファクタリングが容易になり、コンパイル時にバグを検知できるなど、堅牢性と保守性が向上するメリットを説明しています。
TypeScriptの型推論でCLIバリデーションをなくせた話
この記事は、CLIツール開発で頻繁に書かれるバリデーションコードの非効率性を指摘します。
「バリデーションせずパースせよ」という原則に基づき、TypeScriptの型推論とパーサーコンビネータライブラリ「Optique」を紹介。
これにより、CLI引数を最初から有効な型としてパースし、従来のバリデーションコードをほぼ不要にできると提唱します。
結果として、コード量が減り、リファクタリングが容易になり、コンパイル時にバグを検知できるなど、堅牢性と保守性が向上するメリットを説明しています。
TypeScriptの型推論でCLIバリデーションをなくせた話
CLIツールを作っていると、必ずと言っていいほど書くことになるバリデーションコード。TypeScriptの型推論を活用したら、このコードをほぼ不要にできたお話をします。きっかけは、いろんなプロジェクトのコードを読んでいて気づいたことでした。どのCLIツールにも、似たようなバリデーションコードが含まれているんです。例えばこんな感じです:if (!opts.server && opts
zenn.dev
September 12, 2025 at 9:19 PM
今日のZennトレンド
TypeScriptの型推論でCLIバリデーションをなくせた話
この記事は、CLIツール開発で頻繁に書かれるバリデーションコードの非効率性を指摘します。
「バリデーションせずパースせよ」という原則に基づき、TypeScriptの型推論とパーサーコンビネータライブラリ「Optique」を紹介。
これにより、CLI引数を最初から有効な型としてパースし、従来のバリデーションコードをほぼ不要にできると提唱します。
結果として、コード量が減り、リファクタリングが容易になり、コンパイル時にバグを検知できるなど、堅牢性と保守性が向上するメリットを説明しています。
TypeScriptの型推論でCLIバリデーションをなくせた話
この記事は、CLIツール開発で頻繁に書かれるバリデーションコードの非効率性を指摘します。
「バリデーションせずパースせよ」という原則に基づき、TypeScriptの型推論とパーサーコンビネータライブラリ「Optique」を紹介。
これにより、CLI引数を最初から有効な型としてパースし、従来のバリデーションコードをほぼ不要にできると提唱します。
結果として、コード量が減り、リファクタリングが容易になり、コンパイル時にバグを検知できるなど、堅牢性と保守性が向上するメリットを説明しています。
Reposted by 洪 民憙 (Hong Minhee)
https://zenn.dev/hongminhee/articles/27bce6eb777dea
TypeScriptの型推論を活用してCLIツールのバリデーションコードを不要にする話です。
Optiqueというライブラリを使って、依存関係や排他的なオプション、環境別の必須オプションなどを型で表現します。
バリデーションコードの削減、リファクタリングの容易化、CLI機能の充実といったメリットを紹介しています。
TypeScriptの型推論を活用してCLIツールのバリデーションコードを不要にする話です。
Optiqueというライブラリを使って、依存関係や排他的なオプション、環境別の必須オプションなどを型で表現します。
バリデーションコードの削減、リファクタリングの容易化、CLI機能の充実といったメリットを紹介しています。
TypeScriptの型推論でCLIバリデーションをなくせた話
zenn.dev
September 13, 2025 at 7:28 AM
https://zenn.dev/hongminhee/articles/27bce6eb777dea
TypeScriptの型推論を活用してCLIツールのバリデーションコードを不要にする話です。
Optiqueというライブラリを使って、依存関係や排他的なオプション、環境別の必須オプションなどを型で表現します。
バリデーションコードの削減、リファクタリングの容易化、CLI機能の充実といったメリットを紹介しています。
TypeScriptの型推論を活用してCLIツールのバリデーションコードを不要にする話です。
Optiqueというライブラリを使って、依存関係や排他的なオプション、環境別の必須オプションなどを型で表現します。
バリデーションコードの削減、リファクタリングの容易化、CLI機能の充実といったメリットを紹介しています。
I wrote a post on my blog after a long time.
Recent open source development updates
writings.hongminhee.org
September 12, 2025 at 11:21 AM
I wrote a post on my blog after a long time.
Reposted by 洪 民憙 (Hong Minhee)
TypeScriptの型推論でCLIバリデーションをなくせた話
CLIツールを作っていると、必ずと言っていいほど書くことになるバリデーションコード。TypeScriptの型推論を活用したら、このコードをほぼ不要にできたお話をします。 きっかけは、いろんなプロジェクトのコードを読んでいて気づいたことでした。どのCLIツールにも、似たようなバリデーションコードが含まれているんです。例えばこんな感じです: if (!opts.server && opts.port) { throw new Error('--port requires --server flag'); } if…
CLIツールを作っていると、必ずと言っていいほど書くことになるバリデーションコード。TypeScriptの型推論を活用したら、このコードをほぼ不要にできたお話をします。 きっかけは、いろんなプロジェクトのコードを読んでいて気づいたことでした。どのCLIツールにも、似たようなバリデーションコードが含まれているんです。例えばこんな感じです: if (!opts.server && opts.port) { throw new Error('--port requires --server flag'); } if…
TypeScriptの型推論でCLIバリデーションをなくせた話
CLIツールを作っていると、必ずと言っていいほど書くことになるバリデーションコード。TypeScriptの型推論を活用したら、このコードをほぼ不要にできたお話をします。 きっかけは、いろんなプロジェクトのコードを読んでいて気づいたことでした。どのCLIツールにも、似たようなバリデーションコードが含まれているんです。例えばこんな感じです: if (!opts.server && opts.port) { throw new Error('--port requires --server flag'); } if (opts.server && !opt... Source link
inmobilexion.com
September 12, 2025 at 12:01 AM
TypeScriptの型推論でCLIバリデーションをなくせた話
CLIツールを作っていると、必ずと言っていいほど書くことになるバリデーションコード。TypeScriptの型推論を活用したら、このコードをほぼ不要にできたお話をします。 きっかけは、いろんなプロジェクトのコードを読んでいて気づいたことでした。どのCLIツールにも、似たようなバリデーションコードが含まれているんです。例えばこんな感じです: if (!opts.server && opts.port) { throw new Error('--port requires --server flag'); } if…
CLIツールを作っていると、必ずと言っていいほど書くことになるバリデーションコード。TypeScriptの型推論を活用したら、このコードをほぼ不要にできたお話をします。 きっかけは、いろんなプロジェクトのコードを読んでいて気づいたことでした。どのCLIツールにも、似たようなバリデーションコードが含まれているんです。例えばこんな感じです: if (!opts.server && opts.port) { throw new Error('--port requires --server flag'); } if…
Reposted by 洪 民憙 (Hong Minhee)
TypeScriptの型推論でCLIバリデーションをなくせた話
https://zenn.dev/hongminhee/articles/27bce6eb777dea
https://zenn.dev/hongminhee/articles/27bce6eb777dea
TypeScriptの型推論でCLIバリデーションをなくせた話
zenn.dev
September 11, 2025 at 11:01 PM
TypeScriptの型推論でCLIバリデーションをなくせた話
https://zenn.dev/hongminhee/articles/27bce6eb777dea
https://zenn.dev/hongminhee/articles/27bce6eb777dea
LogTape 1.1.0 is out! This release brings “fingers crossed” logging—buffer debug logs quietly, then get the full context when errors occur. Plus a new emit() API for integrating external log sources. Check it out:
LogTape 1.1.0: Smarter buffering, seamless integration
LogTape 1.1.0 introduces smarter and more flexible logging with two major features. The first is "fingers crossed" logging, which buffers debug and low-level logs in memory and only outputs them when ...
hackers.pub
September 11, 2025 at 8:45 AM
LogTape 1.1.0 is out! This release brings “fingers crossed” logging—buffer debug logs quietly, then get the full context when errors occur. Plus a new emit() API for integrating external log sources. Check it out:
TypeScriptの型推論を活用してCLIのバリデーションコードを削除できた話を書きました。「バリデーションせずパースせよ」(Parse, don't validate )の考え方をCLIパーサーに適用したOptiqueというライブラリを作った経緯について。
TypeScriptの型推論でCLIバリデーションをなくせた話
zenn.dev
September 11, 2025 at 5:31 AM
TypeScriptの型推論を活用してCLIのバリデーションコードを削除できた話を書きました。「バリデーションせずパースせよ」(Parse, don't validate )の考え方をCLIパーサーに適用したOptiqueというライブラリを作った経緯について。
Reposted by 洪 民憙 (Hong Minhee)
dahlia/upyo: Upyo is a simple and cross-runtime library for sending email messages using SMTP and various email providers. It works on Node.js, Deno, Bun, and edge functions.
dahlia/upyo: Upyo is a simple and cross-runtime library for sending email messages using SMTP and various email providers. It works on Node.js, Deno, Bun, and edge functions.
https://github.com/dahlia/upyo
github.com
July 14, 2025 at 1:11 AM
dahlia/upyo: Upyo is a simple and cross-runtime library for sending email messages using SMTP and various email providers. It works on Node.js, Deno, Bun, and edge functions.