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

洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social

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

()

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.

@hongminhee@hollo.social

That JavaScript/TypeScript runtime idea I mentioned has mutated a bit.

Once I actually thought about it, writing another Node.js/Deno/Bun-shaped runtime didn't seem especially useful; there are enough of those already. What I actually want to try is an ahead-of-time JavaScript/TypeScript compiler in roughly the SBCL/Chez Scheme tradition: native code, with a generic implementation always available and specialized versions picked by cheap runtime guards. A failed guard just falls through to code that's already compiled, rather than needing an interpreter or a deopt path. There are probably adjacent projects doing pieces of this, so I won't claim the territory is empty, but I haven't seen this exact shape applied to JavaScript/TypeScript. I've codenamed it Oseo (鼯鼠; flying squirrel in Sino-Korean).

It's still just a compiler experiment, not something I'd call presentable yet, so the repo stays closed for now. Once it works well enough, the first thing I want to try is switching the Fedify CLI, currently built with deno compile, over to Oseo and seeing what breaks. Fedify is the ActivityPub server framework I also maintain, so it should make a reasonably unforgiving first customer. I'll keep picking at Oseo for the next few months and post again when something interesting starts working.

@smallcircles@social.coop

Major updates were made to the delightful fediverse curated lists..

💎 delightful fediverse experience

- 52 new projects added
- 50 projects marked unmaintained
- 15 projects updated

New list categories:

- Professional networks
- Instant messaging
- Search engines
- Security and privacy

delightful.coding.social/delig

💎 delightful fediverse development

- 18 new projects added
- 20 projects marked unmaintained
- 5 projects updated
- 7 projects removed
- Improved table of contents
- Listed SWICG / SocialCG task forces
- More improvements pending

New list categories:

- SWICG Task forces
- Data portability
- Developer hubs
- Data formats

delightful.coding.social/delig

💎 delightful fediverse clients

- 16 new projects added
- 33 projects marked unmaintained
- 5 projects updated
- 3 projects removed
- Separate section for unmaintained

delightful.coding.social/delig

delightful.coding.social

delightful fediverse clients

Delightful curated lists of free software, open science and information sources.

@liaizon@wake.st

"artist-alley implements ArchivePub, an open federation protocol built on the ActivityPub data model with DAM-shaped extensions for asset sharing, workflow state, and brand workspaces."

"Content-addressed federation:
Every reference to asset bytes uses a content-addressed URI:
cas://<sha256>?content-type=image/png&size=12345"

artist-alley.org/docs/archivep

artist-alley.org

ArchivePub

ArchivePub — the open, ActivityPub-shaped federation protocol that lets independently-operated DAM instances share assets, reviews, and workflow state. Wire format, trust model, and the canonical protocol context.

@evan @siliconsjang Oh, yes! I once introduced SiliconBeest before!

@hongminhee@hollo.social

A friend of mine, @siliconsjang, released SiliconBeest v1.0.0 today. It's a server built on Workers, D1, R2, and Queues, using Fedify.

I like the starting point: after watching fediverse servers go down together during Cloudflare outages, they thought, why not just run on Cloudflare directly?

They're aiming for something cheap enough that a small instance can stay on Cloudflare's free plan, and a somewhat bigger one can fit in the $5/month tier. It's still early; a lot is missing, and Mastodon/Misskey API compatibility is more of a long-term goal.

I'm glad to see Fedify put to use for something like this. Worth checking out.

The source code is on GitHub under AGPL 3.0.

github.com

GitHub - SJang1/siliconbeest: Fediverse in Cloudflare Workers + live serverless code

Fediverse in Cloudflare Workers + live serverless code - SJang1/siliconbeest

looks really interesting! The previous implementation of on , , was kind of a hassle to spin up. I'm interested to see what the uptake is with this one. The creator @siliconsjang says they want to make it fit in the $5/month tier at CloudFlare, which sounds pretty good. Also, cool to see that it uses for federation.

github.com/SJang1/siliconbeest

github.com

GitHub - SJang1/siliconbeest: Fediverse in Cloudflare Workers

Fediverse in Cloudflare Workers. Contribute to SJang1/siliconbeest development by creating an account on GitHub.

@hongminhee@hollo.social

Just created my CodeFloe account!

https://codefloe.com/hongminhee

codefloe.com

洪 民憙 (Hong Minhee)

A software engineer from Seoul. An advocate of F/OSS and fediverse. Hack into East Asian languages.

@codefloe@social.tchncs.de

Now that has manifested their anti-AI view with a 70% in favor vote (codeberg.org/Codeberg/org/pull), we're happy to welcome (once again) all the people which have to/want to move their repositories off Codeberg but still want to stay on a Forgejo-based instance.

Bonus: on top you'll get better uptime, faster site responses and faster CI runners - all for free :)

tl;dr: after this ToU change, keeping AI-generated code on Codeberg would violate these and repositories will be in danger of deletion.

codeberg.org

Proposal Assembly 2026: ToU extension to prohibit LLM-extrusions

Here is the proposed addition for the ToU that @Gusted and I agreed on post-assembly for the upcoming membership vote. 🙏 The discussion for this proposal is available for Codeberg e. V. members in the forum: https://forum.codeberg.org/d/139-resolutions-for-assembly-on-codeberg-taking-a-stand-a...

@codefloe@social.tchncs.de

Now that has manifested their anti-AI view with a 70% in favor vote (codeberg.org/Codeberg/org/pull), we're happy to welcome (once again) all the people which have to/want to move their repositories off Codeberg but still want to stay on a Forgejo-based instance.

Bonus: on top you'll get better uptime, faster site responses and faster CI runners - all for free :)

tl;dr: after this ToU change, keeping AI-generated code on Codeberg would violate these and repositories will be in danger of deletion.

codeberg.org

Proposal Assembly 2026: ToU extension to prohibit LLM-extrusions

Here is the proposed addition for the ToU that @Gusted and I agreed on post-assembly for the upcoming membership vote. 🙏 The discussion for this proposal is available for Codeberg e. V. members in the forum: https://forum.codeberg.org/d/139-resolutions-for-assembly-on-codeberg-taking-a-stand-a...

@mitchellh@hachyderm.io

Ghostty and libghostty are now on Zig 0.16! This was done by a [paid!] contributor over a few weeks. Through this process, the Ghostty non-profit also paid for hours to contribute over a dozen patches upstream to Zig, translate-c, and arocc which help the entire ecosystem. Really amazing work (not by me!) and happy to be upgraded. :)

translate-c: codeberg.org/ziglang/translate

arocc: github.com/Vexu/arocc/pulls?q=

github.com

Pull requests · Vexu/arocc

A modern fully featured C compiler. Contribute to Vexu/arocc development by creating an account on GitHub.

@johannab@cosocial.ca · Reply to Ben Pate 🤘🏻

@benpate @thisismissem

Culture change is hard. Sooooo many people got here "first" and think their claim is the only correct one. Has always been thus ...

One thing I can think of is remind people that r/fediverse is not exactly the place where "the fediverse" is developed, managed, or happening.

Then follow this dev and see what is up! I care much more that the software and the instance are acting like decent neighbours than I do about the infra its hosted on.

@mitchellh@hachyderm.io

LLVM21 is a stinker and has worse codegen in general, and a bug forced disabled loop auto-vectorization. Turned out to be a blessing: we clearly identified areas we were over-reliant on implicit compiler optimizations and were able to explicitly restructure our code to what we really wanted.

The result is that we now have clean generic SIMD subroutines in places we previously relied on auto-vectorization. And we did it better and as a result produced faster code (see below). Pure ASCII throughput improved more than 20% (30% on Linux) which is insane and is purely because we wrote better SIMD than an auto-vectorizer can. Lit.

We also found it stopped inlining automatically in certain places which destroyed some benchmarks based on real world corpuses. As a result, we now explicitly inline those backed by benchmarks. Wonderful.

"Exotic"-sized integers (e.g. u13) also cause poor LLVM codegen and some performance pitfalls were fixed by adding padding to power-of-two sizes. I know Zig is working on a sema fix for this to avoid LLVM ever seeing these.

Note when I said "in general" above I mean that this was consistently across macOS aarch64, Linux aarch64, and Linux x86_64. Just across the board bad codegen.

Some things slowed down more than can be attributed to noise. I'm looking into that now but they're minor benchmarks. The important ones are parity or better.

@benpate@mastodon.social · Reply to Emelia 👸🏻

@thisismissem

Yeah, I'm noticing that more and more. Nothing is able to pass the purity tests. Nobody is good enough. So, doing ANYTHING means we're going to berate you for it.

I try to avoid going straight to the conspiracy theories, but it makes a lot of sense. No better way to discredit something than "false flag"

@thisismissem@hachyderm.io · Reply to Ben Pate 🤘🏻

@benpate i can think of worse companies to host with tbh. Funnily enough these same people probably don't get that a significant portion of the fediverse is actually behind cloudflare's CDNs.

I think these "do as I say" holier than thou types are the bane of the decentralised web. Like, if I wanted to drive people away from open social projects, that's exactly how I'd do it: hire a small group of people to consistently be assholes to other's. It's like 101 from the CIA field guide to sabotage 🚩

@benpate@mastodon.social

A developer in Korea just built a Fediverse server that runs directly on CloudFlare.

/r/fediverse users responded:
"this is cancer"
"you are a horrible person"

???

Can you please help me with a genuine question: what would make the a more welcoming place?

Yes, humans are just grumpy sometimes. But a real solution can't just be more HOA members reading the rules at the door.

What do YOU think would make a difference here?

@hongminhee@hollo.social

Optique, a type-safe combinatorial CLI parser for TypeScript, just shipped 1.2.0.

Modifiers are chainable now: option(…).map(…).withDefault(…). deferredValue() defers a fallback until the handler asks for it.

Four new packages:

  • @optique/prompt
  • @optique/clack
  • @optique/standard-schema
  • @optique/derived-defaults

@optique/discover gains lifecycle hooks and a static-module generator, and optique.dev has a new look.

https://github.com/dahlia/optique/discussions/877

github.com

Optique 1.2.0: fluent modifiers, deferred values, new integrations, and a redesigned site · dahlia/optique · Discussion #877

Optique 1.2.0 adds a method-call style for modifiers, a deferredValue() parser for fallbacks that should only resolve inside a handler, and four new packages: @optique/prompt, @optique/clack, @opti...

@bootlegrydia@treehouse.systems

maybe sometimes it could be subject to misunderstanding for those who don't know about some differences

eg. 質問 is more like "asking in a confrontational way" in modern mandarin chinese but it's just plain "asking" in japanese and korean

hollo.social

中國·日本·臺灣 等의 非韓國語 話者들을 向한 質問: 如…

中國·日本·臺灣 等의 非韓國語 話者들을 向한 質問: 如斯하게 作成된 國漢文混用體 韓國語 文章을 理解 可能한가요?

@hongminhee@hollo.social

中國(중국)·日本(일본)·臺灣(타이완) ()非韓國語(비한국어) 話者(화자)들을 ()質問(질문): 如斯(여사)하게 作成(작성)國漢文混用體(국한문 혼용체) 韓國語(한국어) 文章(문장)理解(이해) 可能(가능)한가요?

  • 大體로 理解 可能하다22 (45%)
  • 어느 程度 理解 可能하다23 (47%)
  • 理解 不可能하다4 (8%)
@hongminhee@hollo.social

中國(중국)·日本(일본)·臺灣(타이완) ()非韓國語(비한국어) 話者(화자)들을 ()質問(질문): 如斯(여사)하게 作成(작성)國漢文混用體(국한문 혼용체) 韓國語(한국어) 文章(문장)理解(이해) 可能(가능)한가요?

  • 大體로 理解 可能하다22 (45%)
  • 어느 程度 理解 可能하다23 (47%)
  • 理解 不可能하다4 (8%)
@mrmts@mstdn.mrmts.com