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

洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social

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

()

@hongminhee@hollo.social

A friend of mine just launched Kosmo, a new service out of Korea, built around the dōjin (同人) scene: fan works, fanzines, that whole self-published creative culture. It's live now at kos.moe, in open beta and Korean-language only for now.

It speaks , so you get the basics: posting, following, boosting. It also has emoji reactions, and one account can hold several public profiles. They say profile tags are coming next, meant to express something about a profile's identity and usable for search and muting too.

It's still early, and they'd genuinely appreciate feedback from anyone who gives it a try.

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@kosmo@planet.moe

안녕하세요. 동인 창작 문화 향유자를 위한 SNS, 코스모입니다.

개발 과정에서 이용자 여러분의 목소리를 더 가까이 듣고, 다양한 기능을 실제 환경에서 검증하고 다듬기 위해 오픈 베타를 시작합니다.

코스모를 직접 이용해 보시고, 불편한 점이나 바라는 점이 있다면 자유롭게 의견을 보내 주세요.
여러분의 피드백을 바탕으로 더 나은 코스모를 만들어 가겠습니다.

많은 관심과 참여 부탁드립니다.
감사합니다.

kos.moe

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@kosmo@planet.moe · Reply to 코스모

현재 코스모는 연합우주 SNS의 기본 기능과, 이모지 리액션 및 멀티 프로필 기능을 제공합니다.
아직 초기 개발 단계라 다듬을 점이 있지만, UI와 다양한 기능을 꾸준히 개선하겠습니다.

근시일 내에는 프로필의 정체성을 표현하고 검색·뮤트에 활용할 수 있는 ‘프로필 태그’를 선보일 예정입니다.
코스모를 자유롭게 이용해 보시고, 추가 의견은 ‘피드백 보내기’로 들려주세요.

보내주신 의견을 바탕으로 더 나은 코스모를 함께 만들어가겠습니다.
감사합니다.

@kosmo@planet.moe

안녕하세요. 동인 창작 문화 향유자를 위한 SNS, 코스모입니다.

개발 과정에서 이용자 여러분의 목소리를 더 가까이 듣고, 다양한 기능을 실제 환경에서 검증하고 다듬기 위해 오픈 베타를 시작합니다.

코스모를 직접 이용해 보시고, 불편한 점이나 바라는 점이 있다면 자유롭게 의견을 보내 주세요.
여러분의 피드백을 바탕으로 더 나은 코스모를 만들어 가겠습니다.

많은 관심과 참여 부탁드립니다.
감사합니다.

kos.moe

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@hongminhee@hollo.social

LogTape 2.3.0 is out.

  • withConfig(): scoped, temporary logging policies—handy for tests and request-local debug output
  • createFailureLogReporter(): test logs shown only on failure, plus Node.js/Deno/Bun/Vitest packages
  • New @logtape/graphql-yoga integration
  • Sentry sink: route logs vs. breadcrumbs by level

https://github.com/dahlia/logtape/discussions/197

github.com

LogTape 2.3.0: Scoped configuration, failure-only test logs, and GraphQL Yoga · dahlia/logtape · Discussion #197

LogTape is a logging library for JavaScript and TypeScript that works across Deno, Node.js, Bun, and browsers. It's built around structured logging, has zero dependencies, and is designed to work a...

@hongminhee@hollo.social

Read why's (poignant) Guide to Ruby and Dave Thomas's Pragmatic Programmer in high school in the mid-2000s and got obsessed. I went looking for a Rails shop for my first job. I loved that Ruby had Perl's hacker spirit and Smalltalk's elegant object system.

I moved on to other languages a few years later. Almost twenty years on, reading about the far-right politics of some of Ruby's most powerful people just makes me sad.

poignant.guide

Why's (Poignant) Guide to Ruby

A programming adventure for Ruby beginners illustrated with cartoon foxes.

@threedaymonk@sonomu.club
@julian@activitypub.space
<p><a href="http://httpsig.org/" rel="nofollow ugc">httpsig.org</a> is a site with one sole purpose, to advocate for the adoption of <a href="https://www.rfc-editor.org/rfc/rfc9421.html" rel="nofollow ugc">RFC 9421 HTTP Signatures</a>. It has a "Libraries" tab that does exactly what it advertises, it lists a bunch of libraries for you to use so you don't have to roll your own.</p> <p>If you want to integrate AP today, but you don't want to roll your own everything, where do you go? Who do you ask?</p> <p>All I know is:</p> <ul> <li><a href="https://fedify.dev/" rel="nofollow ugc">Fedify</a> → Typescript (thanks <a href="https://hollo.social/@hongminhee">@<bdi>hongminhee@hollo.social</bdi></a>!)</li> <li><a href="https://github.com/go-ap/fedbox" rel="nofollow ugc">FedBOX</a> → Go (thanks <a href="https://metalhead.club/@mariusor">@<bdi>mariusor@metalhead.club</bdi></a>!)[...]</li></ul>

httpsig.org is a site with one sole purpose, to advocate for the adoption of RFC 9421 HTTP Signatures. It has a "Libraries" tab that does exactly what it advertises, it lists a bunch of libraries for you to use so you don't have to roll your own.

If you want to integrate AP today, but you don't want to roll your own everything, where do you go? Who do you ask?

All I know is:

Do we even have a list sorted by language? This would be huge. What other AP frameworks do you know of?

Granted, I didn't do a lot of thinking and deep diving before I listed those two examples, but even then, that's 1 more example than is listed on https://activitypub.rocks, so I think I might be on to something here from a developer advocacy point of view.

If I were looking to integrate AP, one of the first conclusions I'd come to is that the protocol itself is fairly complex and a library or framework might help.

I don't think there is a list that plainly lists supported libraries by language.

activitypub.rocks

ActivityPub Rocks!

@hongminhee@hollo.social

ActivityPub assumes content is text/html by default when mediaType isn't specified, whether the object is a Note or an Article. Misskey does something different, for reasons I still don't fully understand. It stores its internal representation as MFM, its own markup language. Between Misskey instances, it sends that through a separate _misskey_content property rather than content itself. When talking to non-Misskey software, it converts HTML into MFM.

The trouble is that MFM can represent much less than HTML. If another implementation sends HTML that has no clean MFM equivalent, the formatting comes out mangled in Misskey.

I keep wondering why Misskey didn't just store HTML, like Mastodon and most other implementations do, or at least kept both the source markup and the rendered HTML side by side. I know storing only HTML can lose some MFM features too. I still don't understand why Misskey chose the format that can represent less.

github.com

misskey/packages/backend/src/core/MfmService.ts at 2026.7.0-rc.0 · misskey-dev/misskey

🌎 A completely free and open interplanetary-microblogging platform 🚀 - misskey-dev/misskey

@zeab@fosstodon.org
@hongminhee@hollo.social

中國語(중국어)로 「키보드 워리어」를 「鍵盤俠(건반협)」이라고 부른다는 걸 오늘 알게 되었다. 너무 재밌는 말이라 韓國語(한국어)輸入(수입)하고 싶을 程度(정도)이다.

newton.com.tw

鍵盤俠(網路詞語):出現背景,網路評論,出現原因,群體特徵,_中文百科全書

鍵盤俠(網路詞語)出現背景,網路評論,出現原因,群體特徵,

@dysfun@treehouse.systems

Domain Driven Development (DDD) - buying a domain name to attempt to force yourself to write the software it's for.

@osapon@mstdn.nere9.help

ActivityPubでちゃんと地震速報配信するなら、常にフォロワーが居る全サーバーのinboxに1セッション繋いだまま、いつでもデータを送れる状態で待機しとくしかないよ。

Some amusing timing: Vercel Labs just published scriptc, with a strikingly similar surface goal: compile JavaScript/TypeScript ahead of time to a small native executable, with no Node.js or V8 embedded. Apparently someone else wandered into roughly the same problem at roughly the same time. The design underneath is almost the opposite bet, though.

scriptc runs the real TypeScript 7 checker and treats its results as facts, lowering them into a typed IR with monomorphic arrays, exact records, tagged unions, and so on, then through LLVM or a C fallback. Anything outside that model, including any and plain JavaScript packages, needs --dynamic, which links QuickJS-ng as a separate island with its own heap and microtask queue. Values are copied and checked at the boundary. Its correctness evidence is 800+ differential tests against Node.js, rather than a spec-conformance claim.

Oseo trusts none of that. A value annotated number may still be a string at runtime, and the compiled generic path has to handle it without an escape-hatch VM. Typed and untyped code use the same native generic-plus-guarded model, and the target is versioned ECMA-262/test262 conformance rather than matching Node.js behavior. scriptc trusts the checker and isolates what it doesn't trust in another engine; Oseo trusts nothing, but has no second engine to isolate it into. scriptc is already a much broader, more mature Vercel Labs project. I just find the near-convergence from opposite directions rather pleasing.

Filip Jerzy Pizło, Fil-C's author and someone who makes dynamic languages fast for a living, left a fairly harsh critique of scriptc on Hacker News, worth reading in full. His core complaints, QuickJS-ng as the any fallback and floats-only numbers without integer inference, land on exactly the two bets Oseo refuses to make: a guard failure here falls through to already-compiled generic code, not an interpreter, and there's no static gamble on numeric representation to begin with.

@hongminhee@hollo.social · Reply to JKB

@jkb I'm not entirely sure about North America, but in East Asia—at least in Korea—generative AI is already being used a lot in the arts and commercial advertising, and it seems like typical office workers are using LLMs quite a bit as well.

@hongminhee@hollo.social

I get the impression that people are more open to generative AI like LLMs in North America than in Europe, and even more so in East Asia than in North America, and I'm curious as to why that is.

@reesericci@socialhub.activitypub.rocks

This FEP introduces Emoji Catalog, which provide a way for both clients and servers to publish and discover custom emoji.

ActivityPub implementations, including Mastodon, commonly support custom emoji. FEP-9098 defines how an Emoji is embedded in an Activity Streams object, but it does not define how a client discovers the emoji available for use when composing new content.

This leads to ActivityPub clients relying on implementation-specific APIs such as the Mastodon custom emoji endpoint.

A standardized emoji catalog allows a C2S client to:

  • Populate an emoji picker.
  • Determine which emoji the authenticated actor may use.
  • Retrieve emoji categories and static previews.
  • Update its local cache when the catalog changes.

Additionally, a standardized emoji catalog allows servers to publish custom emoji that other ActivityPub implementations can discover reliably.

Read full FEP at https://codeberg.org/fediverse/fep/pulls/888

codeberg.org

Add FEP-de8d: Emoji Catalogs

This FEP introduces Emoji Catalog, which provide a way for both clients and servers to publish and discover custom emoji. ActivityPub implementations, including Mastodon, commonly support custom emoji. FEP-9098 defines how an Emoji is embedded in an Activity Streams object, but it does not def...

@hongminhee@hollo.social · Reply to bgl gwyng

@bgl Yep, aware of Static Hermes. The big difference is that its annotations define a sound, stricter language: typed arrays aren't ordinary JavaScript arrays, and once something's annotated, that annotation is enforced, not just advisory. In Oseo an annotation is only a hint; a number can still turn out to be a string at runtime, and the compiled generic path has to handle that correctly regardless. Static Hermes also still routes untyped code through Hermes's own interpreter and JIT tiers, so it's really two systems stitched together. Oseo has no VM tier at all: typed and untyped values share one JavaScript semantics, and annotations only pick which already-compiled native path runs. Different platform too: Static Hermes lives inside React Native's engine, Oseo is aiming to be a self-contained native binary, server-side for now.

@tesaguri@fedibird.com

分散ネットワークにおける決済の手段として暗号通貨は自然な選択肢の一つだと思うけど(Fediverseのサーバを跨ぐやり取りで特定のプラットフォーム(たとえそれがOpen Collectiveだったとしても)をハードコードするわけにはいかないだろうし)、ホストしているサービスの規約の都合からFEPチームの意思によらずFEPで暗号通貨に言及できなくなるというのは深刻なリスクでは

@qdot@buttplug.engineer

inspired by CLAUDE.md, I’ve started putting markdown files named after coworkers into work code repos so I can remind them to stop doing shit to the codebase that annoys me

for some reason they’re all mad at me now, which means ill be adding commands to JEREMY.md for an attitude adjustment

@hongminhee@hollo.social · Reply to bgl gwyng

@bgl Different goals, really. AssemblyScript is its own statically-typed language that happens to look like TypeScript: it accepts a strict subset of the syntax, wants explicit types like i32/f64 rather than dynamic values, and doesn't implement JavaScript's actual object and prototype semantics. You write new code specifically within those constraints to get compact WebAssembly out. Oseo is trying to keep full ECMA-262 dynamic semantics, arbitrary shapes, any, all of it, and still reach native code, with types and JSDoc used only as opt-in hints that fall back to a compiled generic path whenever they're wrong. AssemblyScript trades JavaScript semantics for a clean path to WebAssembly; Oseo is betting it doesn't have to make that trade. Similar-looking syntax, close to opposite premises.