@bootlegrydia That's also interesting!

洪 民憙 (Hong Minhee) 
@hongminhee@hollo.social
1,099 following1,876 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 #TypeScript, #Haskell, #Rust, & #Python. They/them.
서울에 사는 交叉女性主義者이자 社會主義者. 金剛兔(@tokolovesme)의 配偶者. @fedify, @hollo, @botkit 메인테이너. #TypeScript, #Haskell, #Rust, #Python 等으로 自由 소프트웨어 만듦.
- Website
- Hackers' Pub
@hongminhee seems in northeast china's korean language it's 건반군 (鍵盤軍? 君? dunno which one it is)
mw.jl.gov(dot)cn/xxgk/tzgg/202412/W020241218543067361444.pdf
LogTape 2.3.0 is out.
withConfig(): scoped, temporary logging policies—handy for tests and request-local debug outputcreateFailureLogReporter(): test logs shown only on failure, plus Node.js/Deno/Bun/Vitest packages- New
@logtape/graphql-yogaintegration - Sentry sink: route logs vs. breadcrumbs by level
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...
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.
It doesn’t matter whether “Matz is nice”
https://po-ru.com/2026/07/29/it-doesnt-matter-whether-matz-is-nice
#ruby #blog
po-ru.com
It doesn’t matter whether “Matz is nice”
I’ve met Matz once, I think, at EuRuKo in Krakow in 2010. We chatted briefly in Japanese. He seemed nice, but also quiet and reserved. At the time, he didn’t speak much English; perhaps he could speak more and just wasn’t particularly confident, but he didn’t.
It doesn’t matter whether “Matz is nice”
https://po-ru.com/2026/07/29/it-doesnt-matter-whether-matz-is-nice
#ruby #blog
po-ru.com
It doesn’t matter whether “Matz is nice”
I’ve met Matz once, I think, at EuRuKo in Krakow in 2010. We chatted briefly in Japanese. He seemed nice, but also quiet and reserved. At the time, he didn’t speak much English; perhaps he could speak more and just wasn’t particularly confident, but he didn’t.
<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:
- Fedify → Typescript (thanks @hongminhee@hollo.social!)
- FedBOX → Go (thanks @mariusor@metalhead.club!)[...]
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!
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
The more that I use #optique by @hongminhee, the more impressive the #typescript CLI parser is. It's clearly a CLI framework.
Like I just found you can do man pages! 🤯 I'm now navigating more to see what other secrets this has. 😎

optique.dev
Optique: type-safe combinatorial CLI parser for TypeScript | Optique
Model your command-line grammar with composable, type-safe parsers. Mutually exclusive modes, dependent options, inferred result types, help, completion, and man pages all come from the same parser definition.
SOCIALISTS AREN’T NAIVE ABOUT HUMAN NATURE https://jacobin.com/2026/07/socialism-human-nature-morality
jacobin.com
Socialists Aren’t Naive About Human Nature
Critics of socialism frequently charge that it rests on an overly optimistic view of human nature. The truth is that socialists want a system that guards against tendencies to greed and domination.
中國語로 「키보드 워리어」를 「鍵盤俠」이라고 부른다는 걸 오늘 알게 되었다. 너무 재밌는 말이라 韓國語로 輸入하고 싶을 程度이다.
newton.com.tw
鍵盤俠(網路詞語):出現背景,網路評論,出現原因,群體特徵,_中文百科全書
鍵盤俠(網路詞語)出現背景,網路評論,出現原因,群體特徵,
@mdione Exactly! 😂
@hongminhee the people at the dot pub NIC have two yachts named "The Evan Prodromou" and "The Hong Minhee"
Domain Driven Development (DDD) - buying a domain name to attempt to force yourself to write the software it's for.
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.
@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.
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.
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...
hot take, EVERY activitypub implementation should build an OICD connector just as #gotosocial https://docs.gotosocial.org/en/latest/configuration/oidc/
why you say?
Imagine using my mastodon account in any server to login in any other mastodon server, pixelfed, lemmy, you name it ... single login
@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.
分散ネットワークにおける決済の手段として暗号通貨は自然な選択肢の一つだと思うけど(Fediverseのサーバを跨ぐやり取りで特定のプラットフォーム(たとえそれがOpen Collectiveだったとしても)をハードコードするわけにはいかないだろうし)、ホストしているサービスの規約の都合からFEPチームの意思によらずFEPで暗号通貨に言及できなくなるというのは深刻なリスクでは
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
Open Weights and American AI Leadership https://lobste.rs/s/gqgbrz #ai
https://www.microsoft.com/en-us/corporate-responsibility/topics/open-weight/
microsoft.com
Open Weights and American AI Leadership
Open weight AI can expand access, strengthen competition, improve security, and help sustain American AI leadership.
is it good for iot education (rpi)
thonny.org
Thonny, Python IDE for beginners
@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.
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.
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
https://delightful.coding.social/delightful-fediverse-experience
💎 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
https://delightful.coding.social/delightful-fediverse-development
💎 delightful fediverse clients
- 16 new projects added
- 33 projects marked unmaintained
- 5 projects updated
- 3 projects removed
- Separate section for unmaintained
https://delightful.coding.social/delightful-fediverse-clients
delightful.coding.social
delightful fediverse clients
Delightful curated lists of free software, open science and information sources.
"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"
https://artist-alley.org/docs/archivepub
#ActivityPub #fedidev #ArchivePub
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.