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

洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social

1,082 following1,893 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 메인테이너. , , , 等으로 自由 소프트웨어 만듦.

()

@erictapen@chaos.social

If you are working on Fediverse software, you might have heard about FEP-8a8e, which is an upcoming standard to unitize how events (as in gatherings of people) are shared via ActivityPub.

I'm currently working on a cool new validation tool that is supposed to help developers write correct implementations of this standard:

validate.event-federation.eu/

🧵1/7

A screenshot from https://validate.event-federation.eu/

Verify your ActivityStreams Event object for FEP-8a8e compliance

FEP-8a8e is a standardisation attempt about the way the Fediverse talks about Events.

Enter any URL or JSON here...
...or pick one of these examples:
« Discover Hoop Dance - Workshop fiir FLINTA* only from the Mobilizon instance fomobremen.info
« BIGG EGG + COMPUTER + LIFELINE + JAVA from the Gancio instance montreal.askapunk.net
+ FOSDEM - BOF/Unconference: Shaping the Future of Events and Calendars in the Fediverse from the event-
federation.eu website using the ActivityPub Plugin for Gatherpress
ALT text

A screenshot from https://validate.event-federation.eu/ Verify your ActivityStreams Event object for FEP-8a8e compliance FEP-8a8e is a standardisation attempt about the way the Fediverse talks about Events. Enter any URL or JSON here... ...or pick one of these examples: « Discover Hoop Dance - Workshop fiir FLINTA* only from the Mobilizon instance fomobremen.info « BIGG EGG + COMPUTER + LIFELINE + JAVA from the Gancio instance montreal.askapunk.net + FOSDEM - BOF/Unconference: Shaping the Future of Events and Calendars in the Fediverse from the event- federation.eu website using the ActivityPub Plugin for Gatherpress

@hongminhee@hollo.social

Hackers' Pub now allows you to follow hashtags, and it's deeply integrated with tags.pub!

tags.pub

tags.pub

@hongminhee@hackers.pub

Hackers' Pub 새 프런트엔드(web-next)에서 해시태그를 팔로할 수 있게 되었습니다. 해시태그를 팔로하면 팔로하지 않은 계정에서 쓴 콘텐츠여도 해당 해시태그가 붙어 있을 경우 피드에 뜨게 됩니다. 또한, 기술적으로는 tags.pub과 연동되어 있어서, 연합우주(fediverse) 전체적으로 해당 해시태그를 추적할 수 있게 되어 있습니다. 참고로 자신이 어떤 해시태그를 팔로하는지는 다른 사람에게 공개되지 않습니다.

해시태그를 팔로하려면 검색창에 #해시태그_이름으로 검색하신 뒤, 검색 결과에서 팔로 버튼을 누르시면 됩니다. 또한, “사이드바에 추가” 버튼까지 누르시면, 좌측 사이드바에서 타임라인 섹션 맨 아래쪽에 해당 해시태그가 추가되어 언제나 쉽게 접근 가능해집니다.

#Haskell 해시태그 검색 결과 화면입니다. Abhinav 사용자가 올린 “feed-repeat v1.0” 도구 배포에 관한 게시물이 포함되어 있습니다.
ALT text

#Haskell 해시태그 검색 결과 화면입니다. Abhinav 사용자가 올린 “feed-repeat v1.0” 도구 배포에 관한 게시물이 포함되어 있습니다.

Hackers' Pub 로고가 상단에 있고, 아래로 타임라인, 피드, 공유 제외, 게시글만, 연합우주, 검색 등의 메뉴와 팔로우 중인 해시태그 목록이 나열된 좌측 사이드바 메뉴 화면입니다.
ALT text

Hackers' Pub 로고가 상단에 있고, 아래로 타임라인, 피드, 공유 제외, 게시글만, 연합우주, 검색 등의 메뉴와 팔로우 중인 해시태그 목록이 나열된 좌측 사이드바 메뉴 화면입니다.

@hongminhee@hackers.pub

Hackers' Pub 새 프런트엔드(web-next)에서 해시태그를 팔로할 수 있게 되었습니다. 해시태그를 팔로하면 팔로하지 않은 계정에서 쓴 콘텐츠여도 해당 해시태그가 붙어 있을 경우 피드에 뜨게 됩니다. 또한, 기술적으로는 tags.pub과 연동되어 있어서, 연합우주(fediverse) 전체적으로 해당 해시태그를 추적할 수 있게 되어 있습니다. 참고로 자신이 어떤 해시태그를 팔로하는지는 다른 사람에게 공개되지 않습니다.

해시태그를 팔로하려면 검색창에 #해시태그_이름으로 검색하신 뒤, 검색 결과에서 팔로 버튼을 누르시면 됩니다. 또한, “사이드바에 추가” 버튼까지 누르시면, 좌측 사이드바에서 타임라인 섹션 맨 아래쪽에 해당 해시태그가 추가되어 언제나 쉽게 접근 가능해집니다.

#Haskell 해시태그 검색 결과 화면입니다. Abhinav 사용자가 올린 “feed-repeat v1.0” 도구 배포에 관한 게시물이 포함되어 있습니다.
ALT text

#Haskell 해시태그 검색 결과 화면입니다. Abhinav 사용자가 올린 “feed-repeat v1.0” 도구 배포에 관한 게시물이 포함되어 있습니다.

Hackers' Pub 로고가 상단에 있고, 아래로 타임라인, 피드, 공유 제외, 게시글만, 연합우주, 검색 등의 메뉴와 팔로우 중인 해시태그 목록이 나열된 좌측 사이드바 메뉴 화면입니다.
ALT text

Hackers' Pub 로고가 상단에 있고, 아래로 타임라인, 피드, 공유 제외, 게시글만, 연합우주, 검색 등의 메뉴와 팔로우 중인 해시태그 목록이 나열된 좌측 사이드바 메뉴 화면입니다.

@hongminhee@hollo.social

I write YAML list items flush with the parent key rather than indented further:

# my preference
items:
- foo
- bar
- baz

# what formatters produce
items:
  - foo
  - bar
  - baz

Every formatter insists on the two-space version instead, so across all my projects, **/*.yaml and **/*.yml end up in deno fmt's exclude list.

The other fixation is .yaml over .yml. The official YAML FAQ has explicitly recommended the longer form for years, but the three-character habit spread through GitHub Actions templates and most people never thought to check.

web.archive.org

YAML Ain't Markup Language

@hongminhee@hollo.social

What keeps me on GitHub isn't only the social graph. Trusted publishing is the bigger obstacle.

npm, JSR, and crates.io all support GitHub Actions, or GitLab in some cases. Codeberg isn't an option yet.

crates.io says adding Codeberg/Forgejo support should be straightforward, and Forgejo is already tracking the work. Hoping npm and JSR follow. I want to move my projects to Codeberg without giving up trusted publishing.

@hongminhee@hollo.social · Reply to bgl gwyng

@bgl 마음이 많이 아프시겠어요… 사람과 달리 사람과 같이 사는 강아지의 세계는 정말 그 가족으로 한정되는 경우가 많죠. 그래서 더더욱 강아지를 잊지 못하게 만드는 것 같습니다. 또미는 좋은 곳에 먼저 가서 먼 훗날 가족과 다시 만나길 기다리고 있을 거예요. 마음 추스르시길…

@bgl@hackers.pub

밤사이 강아지 또미가 세상을 떠났다. 다행히 아프지 않게 잠든 사이 편안하게 갔다. 왠지 아무 상관 없는 사람들도 얼마 전까지 이렇게 생긴 11살 요크셔테리어 한마리가 세상에 있었단걸 알았으면 좋겠단 생각이 들었다. 금방 까먹더라도.

기지개키는 또미
ALT text

기지개키는 또미

더 긁어달라고 눈치주는 또미
ALT text

더 긁어달라고 눈치주는 또미

터그 놀이하자고 아침에 보채는 또미
ALT text

터그 놀이하자고 아침에 보채는 또미

점프하는 또미
ALT text

점프하는 또미

편안하게 잠든 또미
ALT text

편안하게 잠든 또미

@hongminhee@hollo.social

나는 Apple이 폴더블 iPhone을 만든다는 게 아예 想像(상상)이 안 되는데, 다들 Apple이 폴더블 iPhone을 내놓을 거라고 굳게 믿는 게 놀랍게 느껴진다…

@evan@cosocial.ca

If you believe in the :

- post here
- bring your friends and family here
- tell companies, governments and creators to be here
- pay for your instance
- pay for your software

Do one thing every day. The Fediverse is worth fighting for.

@hongminhee@hollo.social · Reply to burly

@burly Yeah, fair read. “Winning path” was a bad phrase. I meant path of least resistance: if the easiest thing is always to write Node.js-compatible code, there's not much reason for a Deno-native package culture to form. Nobody loses; it just never gets built.

@hongminhee@hollo.social · Reply to definitely just a musician

@tychi Both Deno and Node.js run on V8, and V8 is C++, so Rust doesn't really distinguish them at the engine level. If you want a Rust-native JavaScript stack, Andromeda is probably closer: it runs on Nova, a JavaScript engine written in Rust rather than V8. Still experimental, but that's the tradeoff when you step off the compatibility treadmill.

tryandromeda.dev

Andromeda

Andromeda - Rust-powered JavaScript and TypeScript runtime

@hongminhee@hollo.social

Deno 2.8.0 is out. The compatibility work is real: the .js test suite pass rate jumped from 42% to 76.4%, deno install is now a drop-in for npm install, lib.node is included by default, and setTimeout() now returns a NodeJS.Timeout instead of a number. None of that is irrational on its own. Put it together, though, and starts looking less like an alternative to Node.js and more like a cleaner way to run Node.js-shaped code.

It reminds me of OS/2's Win32 compatibility layer. IBM offered it so developers wouldn't have to choose, but the effect was the opposite: people kept writing Windows apps, and OS/2-native software never got a reason to exist. The closer Deno gets to Node.js, the less reason anyone has to think about whether their code is Deno-aware. Maybe that helps adoption. I just don't see how a Deno-native package culture survives if the winning path is “pretend it's npm.”

deno.com

Deno 2.8 | Deno

`import defer`, six new subcommands (`deno transpile`, `deno pack`, `deno bump-version`, `deno ci`, `deno why`, `deno audit fix`), network debugging in Chrome DevTools, framework-aware `deno compile`, and 3.66x faster cold npm installs.

@grishka@mastodon.social

I did it. 1.0 is officially out now. Only took me 6.5 years from an idea to something I can proudly call a stable release.

@botkit@hollo.social

BotKit security updates: 0.3.3 and 0.4.2

If you use BotKit, update to a patched release now. CVE-2026-42462 affects Fedify's Linked Data Signature handling, and BotKit inherits the exposure through its dependency on Fedify.

The vulnerability allows an attacker to use JSON-LD graph-restructuring features—specifically @graph, @included, and @reverse—to reshape a signed ActivityPub activity without invalidating its Linked Data Signature. This can cause BotKit (via Fedify) to interpret a different ActivityPub object shape than was originally signed. The fix normalizes Linked Data Signature-verified activities against Fedify's local JSON-LD context before interpreting them, and rejects the JSON-LD constructs that enable the attack.

All versions of BotKit up to 0.3.2 (in the 0.3.x branch) and 0.4.1 (in the 0.4.x branch) are affected. Patched releases are 0.3.3 and 0.4.2.

For BotKit 0.4.x, update @fedify/botkit:

npm  update  @fedify/botkit
yarn upgrade @fedify/botkit
pnpm update  @fedify/botkit
bun  update  @fedify/botkit
deno update  @fedify/botkit

For BotKit 0.3.x, update @fedify/botkit:

npm  update  @fedify/botkit@0.3.3
yarn upgrade @fedify/botkit@0.3.3
pnpm update  @fedify/botkit@0.3.3
bun  update  @fedify/botkit@0.3.3
deno update  @fedify/botkit@0.3.3

If you use other BotKit-related packages (e.g., @fedify/botkit-postgres), update them as well. After updating, redeploy.

The CVE ID is CVE-2026-42462. See also fedify-dev/fedify#773 for Fedify's own announcement.

Thanks to @Claire for the report and responsible disclosure.

If anything is unclear, feel free to ask on GitHub Discussions or Matrix.

matrix.to

You're invited to talk on Matrix

You're invited to talk on Matrix

@tirr@mitir.social
JSON-LD 약간 좀 XML같음... 스펙에 부합하는 안전한 파서 만들기가 지옥이라는 점에서...
@john@john.onolan.org

Working on adding support in Ghost for custom web domain for your handle so that (eg) I can be `@john@onolan.org` rather than `@john@john.onolan.org`

Lots of people run Ghost instances on subdomains, so think this will be helpful!

@john@john.onolan.org

This is now live! If you have an old social web profile with followers that you want to move over to Ghost, that now works.

Find it under Network → Preferences → Account Migration

Set up an account alias pointing to your old handle, then initiate an account move on your old profile.