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

洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social

1,109 following1,901 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

@bgl@hackers.pub

영어권 웹을 보다보면 autism이 한국어에서의 '자폐'보다 부정적인 늬앙스가 훨씬 덜하단 느낌을 받는다. STEM 너드들이 본인이 autistic하다고 하는 경우를 종종 보는데, 자조적인 느낌이 좀 있지만 완전 딥다크한거 같진않고, 이분법적이기보단 스펙트럼으로 보는거 같다.

@hongminhee@hollo.social

漢字文化圏の人々がよく間違える英語の句読法。

開く括弧の前にスペースを入れない事

英語では開く括弧の前にスペースを入れる。

間違い:

Here's an example(of wrong parentheses).

正しい:

Here's an example (of correct parentheses).

範囲を表す時、波線を使う事

英語では、範囲を表す時はエンダッシュ(en dash)を使う。

間違い:

10~20 meters

正しい:

10–20 meters

コロンの前にスペースを入れる事

英語では、コロンの前はスペースを入れず、後ろはスペースを入れる。

間違い:

foo : bar

foo:bar

正しい:

foo: bar

カンマの後にスペースを入れない事

英語ではカンマの前ではスペースを入れずに、カンマの後にスペースを入れる。

間違い:

foo,bar

foo , bar

正しい:

foo, bar

@hongminhee@hollo.social

漢字文化圈(한자문화권) 사람들이 자주 틀리는 英語(영어) 句讀法(구두법)들.

여는 括弧(괄호) 앞에 띄어쓰기를 안 하는 것

英語(영어)에서는 여는 括弧(괄호) 앞에 띄어쓰기를 한다.

틀림:

Here is an example(of wrong parentheses).

맞음:

Here is an example (of correct parentheses).

範圍(범위)를 나타낼 때 물결()를 쓰는 것

英語(영어)에서는 範圍(범위)를 나타낼 때 엔 대시(en dash)를 쓴다.

틀림:

10~20 meters

맞음:

10–20 meters

콜론 앞에 띄어쓰기를 하는 것

英語(영어)에서는 콜론 앞은 붙여 쓰고 뒤는 띄어 쓴다.

틀림:

foo : bar

foo:bar

맞음:

foo: bar

() 뒤에 띄어쓰기를 안 하는 것

英語(영어)에서는 쉼() 앞에서는 붙여 쓰고 뒤에서 띄어쓰기를 한다.

틀림:

foo,bar

foo , bar

맞음:

foo, bar

@arkjun@hackers.pub

맥을 오랫동안 메인 개발머신으로 사용하다가 윈도를 다시 메인으로 사용한 지 1년째.

여러가지 단점에도 불구하고, 윈도11 + WSL (우분투) 환경에서의 개발이 나쁘지만은 않습니다. 물론 CMD 키도 없고, Ctrl 키를 이용한 복사 붙여넣기는 불편합니다만.

그럼에도 맥에 없는 윈도의 장점들이 맘에 들고, 윈도에 없는 맥의 장점들 또한 맘에 듭니다.

물론, 언젠가 또 맥을 다시 메인으로, 윈도를 서브로 쓰는 날도 오겠지요. 메인은 때로 상황에 따라 교체할 수 있음을 유연하게 생각해 두는 편입니다.[1]


사설이 길었는데, 제가 맥에서 자주 쓰는 단축키인 CMD + `(억음 악센트/백틱) 키 는, 사용 중인 앱의 전환을 시켜주는데, 가령 크롬 브라우저 창을 두 개 열었다면 단축키 사용시에 크롬 브라우저 창 간 전환을 시켜 줍니다.

맥에서 가장 많이 사용하는 단축키여서, 윈도에서 비슷한 역할을 하는 단축키를 열심히 구글링하여 찾아 보았으나 찾을 수 없었습니다.

그래서 AutoHotkey[2] 를 이용해 간단한 스크립트를 만들어서 사용하고 있습니다.

사실 완벽하게 동작하지는 않고, 개인적으로 쓰기에 적당히 만족하는 수준에서만 동작하는 코드라, 공유하기에 부끄럽기도 하고 코드도 초 간단합니다만,

  1. 누군가 맥에 익숙하지만 윈도도 쓰는 사용자에게 도움이 되는 마음과,
  2. Hackers’ Pub 의 부흥(?) 을 기원하면서.

해당 AutoHotKey 스크립트 코드를 공유합니다.

; Alt + 백틱 키를 눌렀을 때 실행되는 코드
; MacOS 의 CMD + ` (Backtick) 키로 동일 프로그램내 창전환을 윈도에서 구현. 
!`::
{
    focusedWindow := WinExist("A")
    if !focusedWindow
        return

    focusedPID := WinGetPID(focusedWindow)
    focusedPName := WinGetProcessName(focusedWindow)
    focusedClass := WinGetClass(focusedWindow)
    focusedTitle := WinGetTitle(focusedWindow)

    ; Get all windows of the same class and process
    windows := []
    for window in WinGetList()
    {

        if (WinGetPID(window) = focusedPID && WinGetTitle(window) != focusedTitle)
        {
            windows.Push(window)
        }
    }

    if (windows.Length > 1)
    {
        WinActivate(windows[2])

    } else if (windows.Length = 1) {
        WinActivate(windows[1])
    }
}

실행 방법은 위의 코드를 임의의 ahk 확장자를 가진 파일로 작성하여 AutoHotKey 로 실행시키면 끝입니다. AutoHotkey 를 통해 해당 스크립트를 실행파일 (exe) 로 컴파일 할 수도 있습니다.

덧) 과거에 이미 GitHub Gist 쪽에 공유해 놓기는 했습니다.

읽어주셔서 감사합니다.


  1. 사실 최근 윈도를 메인으로 쓰는 1년 동안, 중간에 간간히 맥을 메인으로 쓰기도 했습니다. ↩︎

  2. 오토핫키(AutoHotkey)는 윈도우에서 키보드 단축키 설정, 간단한 매크로 제작, 자동화 등을 목적으로 하는 무료 오픈 소스 기반의 스크립트 언어이다. 간단한 프로그램 제작에 특화된 직관적인 문법을 갖추고 있으며 마우스와 키보드 제어, 화면에서 이미지 검색, 윈도우 창 조작, 간단한 GUI 제작 등 언어의 목적에 맞는 기능이 내장되어 있다. 출처 : 나무위키 (https://namu.wiki/w/AutoHotkey) ↩︎

@bgl@hackers.pub

바둑에 '묘수 3번두면 바둑은 진다'라는 말이 있는데, 프로그래밍에 비슷한 말이 있을까요

@GIMP@floss.social

GIMP 3.0 is released, check it out!

gimp.org/news/2025/03/16/gimp-

A huge THANK YOU to everyone who contributed in any way - from testing and submitting bug reports through to designing, coding, fixing, packaging, testing some more, translating, documenting, hosting, administration, so many people, so much work, so much to be thankful for!

Welcome to GIMP 3.0!

The GIMP welcome dialogue shows the splash screen (sunset, water, hills), says, You installed GIMP 3.0.0, and offers some choices such as visiting the Web site, tutorials, personalizing GIMP, contributing, creating new images, seeing the release notes and more.
ALT text

The GIMP welcome dialogue shows the splash screen (sunset, water, hills), says, You installed GIMP 3.0.0, and offers some choices such as visiting the Web site, tutorials, personalizing GIMP, contributing, creating new images, seeing the release notes and more.

@deno_land@fosstodon.org

🚀 Deno v2.2.4 is released:

- Built-in OpenTelemetry support for span context propagators (tracecontext, baggage)
- Built-in OTel tracing for node:http.request
- LSP now starts the TypeScript server lazily

other improvements in the release notes:
github.com/denoland/deno/relea

Release v2.2.4 · denoland/deno

2.2.4 / 2025.03.14 feat(otel): span context propagators (#28460) feat(unstable/otel): add otel tracing to node:http.request (#28463) feat: support FORCE_COLOR (#28490) fix(bench): lower bench time...

@97X10X23@town.voyager.blue
법에 대한 부정적 이야기

꾸준히 느끼는 거지만 "법은 지켜가며 해야지" "남에게 피해를 주니까 다들 싫어하는 거다" 이런 말 들을 때마다 '법이 부당할 수 있다는 의심'을 살면서 깊게 하지 않으셨군요! '그럴 수 있는 환경'에서 살아오셨군요! 법을 지키기만 하면 자신은 '안전하고 공정한 사회'에 있을 수 있다는 착각을 할 수 있다는 게 얼마나 큰 '권리'인지 자각하지 못 한다는 점까지가 당신이 특권층이라는 증거입니다.
법을 지키며 시위할 때 말을 들어주기나 한답니까? 목소리가 닿긴 해요? 법을 어기는 건 언제나 마지막 최후의 보루로 둬요. 누가 법을 어기는 걸 쉽게 합니까. 누가 유치장에 가고 싶어 합니까. 누가 그 힘든 길을 걷고 싶겠냐고요.
법이 존재를 인식하지 못 하고, 인식은 하지만 부정하고, 부정하여 내쫓고자 하고, 그리하여 존재 자체가 불법이 되는 경우가 얼마나 많은데… 참 안온하게 자라셨습니다.

@97X10X23@town.voyager.blue · Reply to 유엔

이주민의 정치발언에 대한 제재는 그래도 지난 3개월간 많은 논의가 이루어졌고 단순히 잘못됨을 인지하는 걸 넘어서서 어떻게 바꾸어나가야 할 지에 대한 논의까지 이어졌던 걸로 기억해서 그래도 긍정적으로 보고 있어요
아쉬움과 함께 한 걱정과 우려가 존재하지만, 그만큼 관심 갖는 사람들도 많이 늘었으니까… 희망을 거름삼아 걱정과 우려가 더 커지지 않도록 해야겠죠…

역시 난 2025년 현재에 중국인이라는 이유로 린치하고 있는 이 나라를 규탄해야한다고 생각해 (본론)

@97X10X23@town.voyager.blue

반중, 중국 혐오세력이 중국의 지시를 받았다, 저들은 중국인이다 따위의 혐오발언, 날조와 선동을 하는 것에 대해 우리는 "중국인이 아니다"라는 '해명'을 할 게 아니라 "중국인이면 뭐 어떠냐"라는 '대응'이 필요한데 아직은 전자의 발언이 적잖이 보여서 아쉬움이 있음
중국인이 정치에 참여하면 안 돼? '자국민'인 '한국인'만 한국 정치에 참여 가능해?
중국인이 내는 건강보험 적자라고 해서 중국인이 우리 사회의 좀먹은 부분이고 사람들이 거부감 갖게 만들고, 나중에 가서야 통계 산출에 오류가 있었다 사실 흑자였다라고 하며 사과 한 마디 없던 정부가 존재하는 나라답기도…

어제 인종차별 철폐 기념대회에서 제일 마음 아팠던 말이 이주노동자들에게서 건보 흑자 나는 이유가 뭔 줄 아느냐 병원 갈 시간이 없어서라고 하셨단 말임
내가 아는 이주노동자들은 식당에서 많이 일하는데 식당 노동은 주 6일 12시간 근무가 일상화되어있고, 연차조차 존재하지 않아서 병원에 갈 시간이 존재하지 않음 그래서 좀 속상…

@bgl@hackers.pub

Nix를 보며 알수있는건, 사람들이 메타프로그래밍을 하기 좋은 언어로 메타프로그래밍을 하는게 아니라, 런타임이 좋은 언어로 메타프로그래밍을 한다는 것이다.

Nix의 런타임이 좋다는건 일반적인 의미에서(성능이 빠르다거나) 좋다기보다는 '재현가능한 캐싱되는 빌드'라는 런타임이 아주 많은 동작을 커버하는데 Nix가 그걸 구현했다는 얘기다. 그러니까 사람들은 큰 프로그램을 쌓아올릴 대들보가 될만한 런타임이 있으면 거기서 부터 메타프로그래밍을 시작해버린다. Nix가 언어는 구리고(애초에 엄청 잘만들려고 한거같지도 않음) 메타프로그래밍을 잘하기위한 어떠한 장치도 없음에도 가장 아래에 위치할수있어서 그 역할이 맡겨져버린다.

그래서 유용한 런타임과 오브젝트 언어(또는 DSL)을 표현할 문법에 대한 좋은 아이디어가 있으면, 좀더 나은 메타프로그래밍을 하기위한 언어를 만들수 있을거라고 생각한다.

@TheEvilSkeleton@treehouse.systems
@halcy@icosahedron.website · Reply to halcy​ :icosahedron:

Features:
* Look at your timelines, any attributes of posts and whatnot! creation dates are set correctly, even, probably, sometimes!
* Post by putting text into /posts/new! whatever you put there is posted on file close!
* Reblog a post by copying it to /posts/reblogged (probably breaks a lot)
* Look at media attachments! they're automatically downloaded if you try to open the file!

@curry@hackers.pub

해커스펍의 콘텐츠를 해커스펍이 아닌 다른 서버 계정으로 그곳에서 부스트 하면 더 많은 연합우주 사용자에게 해커스펍 콘텐츠를 알릴 수 있지 않을까?

@bgl@hackers.pub

사실 알고보니 이것도, 저것도 모나드였다... 하는 예시는 많은데 Category의 예시는 뭐가 있을까? 그럼 설명이 훨씬 편해질텐데 말이다.

좀 인위적이지만 쉬운 예시를 하나 만들어보자면, 어떤 함수의 실행에 비용을 부여하는 것이다.

data Costful a b = Costful (a -> IO b) Int

f :: Costful Int String
g :: Costful String Bool

요런 정의를 생각해볼때 f . gfg의 동작은 합성하고, 비용은 +한 것이 될것이다.

instance Category where
 Costful f c1 . Costful g c2 = Costful (f . g) (c1 + c2)

요렇게 말이다. 이때 f . g의 비용은 함수를 실행하기 전에도 알수있다.

반면 그냥 f, g를 모나딕한 함수로 정의하고 f >=> g 이런식으로 합성했을땐, 함수를 실제로 실행하기 전에는 비용을 알수 없다. >=> 또는 >>=의 정의를 생각해보면 쉽게 알수 있다. Category 인스턴스는 정적인 정보를 추가로 가지고 있는 함수, 또는 함수보다 표현력이 약한데 비스무리한거(그래서 정적인 정보가 더많은) 것을 다룰때 유용하다.

@hongminhee@hollo.social

2022()–2023() 사이에 키우던 강아지랑 어머니, 그리고 아버지께서 次例(차례)로 떠나고 나서 憂鬱症(우울증)으로 到底(도저)히 일을 할 수 없을 것 같아서 退社(퇴사)를 했는데, 家族(가족)葬禮(장례)()憂鬱(우울)退社(퇴사)()한 기쁨이 서로 相殺(상쇄)되어 제로가 된 經驗(경험)이 있다.

@yurume@hackers.pub · Reply to 유루메 Yurume

참고로 키보드는 이렇게 생겼다. 게이밍 키보드 아니랄까 조명이 정말 밝아서 설정으로 크게 광량을 줄여야 했다.

@hongminhee 님 초대로 들어 왔습니다. 블루스카이와 어느 쪽을 차별하지 않고 병행해서 쓸 예정이며 이 글처럼 두 쪽 모두에 같은 내용이 올라갈 가능성이 높습니다.

Archon M1 PRO MAX 키보드를 받아서 처음 컴퓨터에 연결한 직후의 사진. 게이밍 키보드 특유의 삐까뻔쩍한 LED 조명이 보인다(나중에 밝기를 크게 줄였다).
ALT text

Archon M1 PRO MAX 키보드를 받아서 처음 컴퓨터에 연결한 직후의 사진. 게이밍 키보드 특유의 삐까뻔쩍한 LED 조명이 보인다(나중에 밝기를 크게 줄였다).

@geeknews_bot@sns.lemondouble.com

애플리케이션 개발 측면에서 본 Drizzle ORM 대 Kysely 비교
------------------------------
# Drizzle ORM vs Kysely 비교 요약

## Drizzle ORM의 장점

- *스키마 정의의 직관성* : 선언적 방식의 스키마 정의가 가능하며, 이로부터 자동으로
CREATE TABLE SQL 생성이 가능.
- *자동화된 마이그레이션* : 스키마 변경사항을 자동으로 감지하여 SQL 마이그레이션 파일 생성이 가능.
-
직관…
------------------------------
https://news.hada.io/topic?id=19805&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

news.hada.io

애플리케이션 개발 측면에서 본 Drizzle ORM 대 Kysely 비교 | GeekNews

Drizzle ORM vs Kysely 비교 요약Drizzle ORM의 장점스키마 정의의 직관성: 선언적 방식의 스키마 정의가 가능하며, 이로부터 자동으로 CREATE TABLE SQL 생성이 가능.자동화된 마이그레이션: 스키마 변경사항을 자동으로 감지하여 SQL 마이그레이션 파일 생성이 가능.직관적인 관계 설정: 테이블 간 관계를 명확하고 직관적으로 정의