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

洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social

1,113 following1,903 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

@yeokbo.bsky.social@bsky.brid.gy

윤석열 오늘 식사 메뉴

서울구치소 12월 식단표
ALT text

서울구치소 12월 식단표

@hongminhee@hollo.social

Speak, 日本(일본) 市場(시장)에도 進出(진출)했구나. 몰랐다.

https://fedibird.com/@GabbingDog/113744920079525287

fedibird.com

ガブ (@GabbingDog@fedibird.com)

話題のAI英会話アプリのSpeakを試してみた。 一応、レッスンとしては自己紹介とか趣味の話題とか決まっているようだが、こちらの返答については割と自由に回答しても、すぐに間違いを修正して正しい表現を教えてくれる。さすがChat-GPTという感じだ。何か表現を間違うと、その部分を取りだしてドリルみたいに何度も練習するようになっている。 Chat-GPTみたいなAIは何となく避けて使ってこなかったが、こういう用途には向いていて、適任だと思った。 そもそも日常会話の話題を考えるのが日本語でも下手なので、ある程度AI側が会話を主導してこっちの回答を引き出してくれるのは助かるし、日常会話の切り出し方も教わってるw

@GabbingDog@fedibird.com

話題のAI英会話アプリのSpeakを試してみた。

一応、レッスンとしては自己紹介とか趣味の話題とか決まっているようだが、こちらの返答については割と自由に回答しても、すぐに間違いを修正して正しい表現を教えてくれる。さすがChat-GPTという感じだ。何か表現を間違うと、その部分を取りだしてドリルみたいに何度も練習するようになっている。

Chat-GPTみたいなAIは何となく避けて使ってこなかったが、こういう用途には向いていて、適任だと思った。

そもそも日常会話の話題を考えるのが日本語でも下手なので、ある程度AI側が会話を主導してこっちの回答を引き出してくれるのは助かるし、日常会話の切り出し方も教わってるw

@pkgupdt@ap.sanwon.kr

hollo 0.4.0으로 업그레이드. 메모리 사용량이 40% 수준으로 줄었다. 조금 더 테스트해보고 이 계정을 이동할 예정.

Okay, it seems to work when I configured Node.js's default DNS resolution order to "ipv6first"… 🤔

Welcome to Node.js v23.5.0.
Type ".help" for more information.
> const dns = await import("node:dns");
undefined
> dns.setDefaultResultOrder("ipv6first");
undefined
> await fetch("https://social.zarchbox.fr/notes/a2dn3k8kt5hm3gci");
Response {
  status: 200,
  statusText: 'OK',
  headers: Headers {
    'alt-svc': 'h3=":443"; ma=2592000',
    'cache-control': 'public, max-age=15',
    'content-length': '10828',
    'content-security-policy': "default-src 'self' 'unsafe-inline'; img-src *; media-src *; frame-ancestors *",
    'content-type': 'text/html; charset=utf-8',
    date: 'Mon, 30 Dec 2024 16:32:22 GMT',
    server: 'Caddy',
    'strict-transport-security': 'max-age=15552000; preload',
    vary: 'Origin, Accept',
    'x-frame-options': 'DENY'
  },
  body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true },
  bodyUsed: false,
  ok: true,
  redirected: false,
  type: 'basic',
  url: 'https://social.zarchbox.fr/notes/a2dn3k8kt5hm3gci'
}
>
ALT text

Welcome to Node.js v23.5.0. Type ".help" for more information. > const dns = await import("node:dns"); undefined > dns.setDefaultResultOrder("ipv6first"); undefined > await fetch("https://social.zarchbox.fr/notes/a2dn3k8kt5hm3gci"); Response { status: 200, statusText: 'OK', headers: Headers { 'alt-svc': 'h3=":443"; ma=2592000', 'cache-control': 'public, max-age=15', 'content-length': '10828', 'content-security-policy': "default-src 'self' 'unsafe-inline'; img-src *; media-src *; frame-ancestors *", 'content-type': 'text/html; charset=utf-8', date: 'Mon, 30 Dec 2024 16:32:22 GMT', server: 'Caddy', 'strict-transport-security': 'max-age=15552000; preload', vary: 'Origin, Accept', 'x-frame-options': 'DENY' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'basic', url: 'https://social.zarchbox.fr/notes/a2dn3k8kt5hm3gci' } >

@hongminhee@hollo.social

I'm troubleshooting a mysterious TypeError: fetch failed exception when using .js's built-in fetch() function. When I make the same request in or , it responds fine. Anyone know why this only happens in Node.js?

Welcome to Bun v1.1.42
Type ".help" for more information.
[!] Please note that the REPL implementation is still experimental!
    Don't consider it to be representative of the stability or behavior of Bun overall.
> await fetch("https://social.zarchbox.fr/notes/a2dn3k8kt5hm3gci");
Response {}
>
ALT text

Welcome to Bun v1.1.42 Type ".help" for more information. [!] Please note that the REPL implementation is still experimental! Don't consider it to be representative of the stability or behavior of Bun overall. > await fetch("https://social.zarchbox.fr/notes/a2dn3k8kt5hm3gci"); Response {} >

Deno 2.1.4
exit using ctrl+d, ctrl+c, or close()
REPL is running with all permissions allowed.
To specify permissions, run `deno repl` with allow flags.
> await fetch("https://social.zarchbox.fr/notes/a2dn3k8kt5hm3gci");
Response {
  body: ReadableStream { locked: false },
  bodyUsed: false,
  headers: Headers {
    "alt-svc": 'h3=":443"; ma=2592000',
    "cache-control": "public, max-age=15",
    "content-length": "10828",
    "content-security-policy": "default-src 'self' 'unsafe-inline'; img-src *; media-src *; frame-ancestors *",
    "content-type": "text/html; charset=utf-8",
    date: "Mon, 30 Dec 2024 15:59:09 GMT",
    server: "Caddy",
    "strict-transport-security": "max-age=15552000; preload",
    vary: "Origin, Accept",
    "x-frame-options": "DENY"
  },
  ok: true,
  redirected: false,
  status: 200,
  statusText: "OK",
  url: "https://social.zarchbox.fr/notes/a2dn3k8kt5hm3gci"
}
>
ALT text

Deno 2.1.4 exit using ctrl+d, ctrl+c, or close() REPL is running with all permissions allowed. To specify permissions, run `deno repl` with allow flags. > await fetch("https://social.zarchbox.fr/notes/a2dn3k8kt5hm3gci"); Response { body: ReadableStream { locked: false }, bodyUsed: false, headers: Headers { "alt-svc": 'h3=":443"; ma=2592000', "cache-control": "public, max-age=15", "content-length": "10828", "content-security-policy": "default-src 'self' 'unsafe-inline'; img-src *; media-src *; frame-ancestors *", "content-type": "text/html; charset=utf-8", date: "Mon, 30 Dec 2024 15:59:09 GMT", server: "Caddy", "strict-transport-security": "max-age=15552000; preload", vary: "Origin, Accept", "x-frame-options": "DENY" }, ok: true, redirected: false, status: 200, statusText: "OK", url: "https://social.zarchbox.fr/notes/a2dn3k8kt5hm3gci" } >

Welcome to Node.js v23.5.0.
Type ".help" for more information.
> await fetch("https://social.zarchbox.fr/notes/a2dn3k8kt5hm3gci");
Uncaught TypeError: fetch failed
    at node:internal/deps/undici/undici:13484:13
    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
    at async REPL1:1:33 {
  [cause]: AggregateError [ETIMEDOUT]:
      at internalConnectMultiple (node:net:1139:18)
      at internalConnectMultiple (node:net:1215:5)
      at Timeout.internalConnectMultipleTimeout (node:net:1739:5)
      at listOnTimeout (node:internal/timers:616:11)
      at process.processTimers (node:internal/timers:549:7) {
    code: 'ETIMEDOUT',
    [errors]: [ [Error], [Error] ]
  }
}
>
ALT text

Welcome to Node.js v23.5.0. Type ".help" for more information. > await fetch("https://social.zarchbox.fr/notes/a2dn3k8kt5hm3gci"); Uncaught TypeError: fetch failed at node:internal/deps/undici/undici:13484:13 at process.processTicksAndRejections (node:internal/process/task_queues:105:5) at async REPL1:1:33 { [cause]: AggregateError [ETIMEDOUT]: at internalConnectMultiple (node:net:1139:18) at internalConnectMultiple (node:net:1215:5) at Timeout.internalConnectMultipleTimeout (node:net:1739:5) at listOnTimeout (node:internal/timers:616:11) at process.processTimers (node:internal/timers:549:7) { code: 'ETIMEDOUT', [errors]: [ [Error], [Error] ] } } >

@esurio1673@c.koliosky.com

来年配線がどうにかなったらPRIMARGYにHolloとMitraは移したさがある

@esurio1673@c.koliosky.com

Hollo, 起動時のメモリ量は若干増えたかなって気はするけどBunの時ほどひどいメモリリークはなくなってる, 300MB程度で収まってるので

@esurio1673@c.koliosky.com

とりあえず帰ったらHolloを0.4.0に上げてみるか

올 한 해를 마무리하며 〈聯合宇宙(연합우주)와 함께 한 一年(일년)〉이라는 主題(주제)로 블로그에 글을 올렸습니다. (페이지 구석의 링크를 눌러서 한글專用文(전용문)으로 바꿔서 보실 수 있습니다.)

https://writings.hongminhee.org/2024/12/a-year-with-the-fediverse/index.ko-kore.html

@hongminhee@hollo.social · Reply to KazukyAkayashi (Hollo)

@KazukyAkayashi Don't know why, but Node.js (at least with v23.5.0) apparently fails to fetch your Iceshrimp server… 🤔

Welcome to Node.js v23.5.0.
Type ".help" for more information.
> await fetch("https://social.zarchbox.fr/notes/a2dn3k8kt5hm3gci");
Uncaught TypeError: fetch failed
    at node:internal/deps/undici/undici:13484:13
    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
    at async REPL1:1:33 {
  [cause]: AggregateError [ETIMEDOUT]:
      at internalConnectMultiple (node:net:1139:18)
      at internalConnectMultiple (node:net:1215:5)
      at Timeout.internalConnectMultipleTimeout (node:net:1739:5)
      at listOnTimeout (node:internal/timers:616:11)
      at process.processTimers (node:internal/timers:549:7) {
    code: 'ETIMEDOUT',
    [errors]: [ [Error], [Error] ]
  }
}
>
ALT text

Welcome to Node.js v23.5.0. Type ".help" for more information. > await fetch("https://social.zarchbox.fr/notes/a2dn3k8kt5hm3gci"); Uncaught TypeError: fetch failed at node:internal/deps/undici/undici:13484:13 at process.processTicksAndRejections (node:internal/process/task_queues:105:5) at async REPL1:1:33 { [cause]: AggregateError [ETIMEDOUT]: at internalConnectMultiple (node:net:1139:18) at internalConnectMultiple (node:net:1215:5) at Timeout.internalConnectMultipleTimeout (node:net:1739:5) at listOnTimeout (node:internal/timers:616:11) at process.processTimers (node:internal/timers:549:7) { code: 'ETIMEDOUT', [errors]: [ [Error], [Error] ] } } >

@KazukyAkayashi@hollo.zarchbox.fr

Update Hollo to v.0.4.0 🎉 But I will have to rewrite my hollo.service for systemd :pikathinknothappy:

http://hollo.social/@hollo/01941325-8d0e-71e4-ad49-daef861c01d0

hollo.social

[Hollo 0.4.0](https://github.c…

[Hollo 0.4.0](https://github.com/dahlia/hollo/releases/tag/0.4.0) released! #Hollo is a single-user federated microblogging software which is #ActivityPub-enabled and powered by #Fedify. The key changes of this release include: * Hollo is now powered by Node.js 23+ instead of Bun for [more efficient memory usage](https://hollo.social/@hollo/0193d5a1-e7e8-7ada-b7cd-8b0a84a8dfe0). * Added an experimental feature flag [`TIMELINE_INBOXES`](https://docs.hollo.social/install/env/#timeline_inboxes) to store all posts visible to your timeline in the database, rather than filtering them in real-time as they are displayed. This is useful for relatively larger instances with many incoming posts, but as of now it may have several bugs. It is expected to be the default behavior in the future after it is stabilized. * Now you can import and export your data from the administration dashboard in CSV format: follows, lists, accounts you muted, accounts you blocked, and bookmarks. * You can now make your profile [`discoverable`](https://docs.joinmastodon.org/spec/activitypub/#discoverable). * The profile page now shows an account's cover image if it has one. * Many bug fixes. For the details, see also the [full changelog](https://github.com/dahlia/hollo/releases/tag/0.4.0). You can upgrade to Hollo 0.4.0 using the following ways: * To Railway users: [Just redeploy the Hollo service](https://docs.hollo.social/install/railway/#upgrading)! * To Docker users: Switch your Hollo image to [`ghcr.io/dahlia/hollo:0.4.0`](https://github.com/users/dahlia/packages/container/hollo/329079566?tag=0.4.0) or simply [`latest`](https://github.com/users/dahlia/packages/container/hollo/329079566?tag=latest)! * To manual installers: 1. Install [Node.js](https://nodejs.org/) 23 or higher. 2. [Install pnpm.](https://pnpm.io/installation) 3. Fetch the [`stable` branch](https://github.com/dahlia/hollo/tree/stable) and switch over to it. 4. Run `pnpm install`. 5. Run `pnpm run prod` to start the Hollo server.

@hollo@hollo.social

Hollo 0.4.0 released! is a single-user federated microblogging software which is -enabled and powered by .

The key changes of this release include:

  • Hollo is now powered by Node.js 23+ instead of Bun for more efficient memory usage.

  • Added an experimental feature flag TIMELINE_INBOXES to store all posts visible to your timeline in the database, rather than filtering them in real-time as they are displayed. This is useful for relatively larger instances with many incoming posts, but as of now it may have several bugs. It is expected to be the default behavior in the future after it is stabilized.

  • Now you can import and export your data from the administration dashboard in CSV format: follows, lists, accounts you muted, accounts you blocked, and bookmarks.

  • You can now make your profile discoverable.

  • The profile page now shows an account's cover image if it has one.

  • Many bug fixes.

For the details, see also the full changelog.

You can upgrade to Hollo 0.4.0 using the following ways:

github.com

GitHub - dahlia/hollo at stable

Federated single-user microblogging software. Contribute to dahlia/hollo development by creating an account on GitHub.

@hollo@hollo.social · Reply to Hollo :hollo:

Hollo 0.4.0がリリースされました!HolloはActivityPubをサポートする御一人様向けのマイクロブログソフトウェアです。

今回のバージョンの主な変更点は以下の通りです。

  • HolloはBunの代わりにNode.js 23+を使う様になり、メモリ使用量を大幅に改善しました

  • 実験的な機能フラグであるTIMELINE_INBOXESを追加しました。この機能フラグをオンにすると、タイムラインに表示する必要がある投稿をリアルタイムでフィルタリングして表示する代わりに、事前にデータベースに保存します。この方式は受け入れる投稿が多い比較的多くのインスタンスで有用ですが、現時点ではまだバグがある可能性が有ります。この動作は安定化された後、今後デフォルトになる予定です。

  • 管理ダッシュボードからアカウントのデータをCSVでインポートまたはエクスポートする事が出来ます。フォローしているアカウント、リスト、ミュートしたアカウント、ブロックしたアカウント、ブックマークをサポートします。

  • アカウントをdiscoverableに設定する事が出来ます。

  • アカウントにカバー画像が設定されている場合、プロフィールページに表示されます。

  • その他、様々なバグを修正しました。

詳細は完全な変更ログをご覧ください。

Hollo 0.4.0にアップグレードするには、以下の方法に従ってください:

github.com

GitHub - dahlia/hollo at stable

Federated single-user microblogging software. Contribute to dahlia/hollo development by creating an account on GitHub.

@hollo@hollo.social

is currently testing .js instead of . (In fact, the hollo.social server is already running on Node.js!) If this test is successful, starting with the next release, Hollo will be powered by Node.js instead of Bun.

The main reason for switching to Node.js is to optimize memory usage. As you can see in the graph image below, Node.js uses significantly less memory than Bun. With this switch, Hollo is expected to be even more lightweight than before!

Are you interested in trying out the Node.js version of Hollo early? Try to pull ghcr.io/dahlia/hollo:0.4.0-dev.290!

Hollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
ALT text

Hollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.

@hollo@hollo.social · Reply to Hollo :hollo:

Hollo 0.4.0이 릴리스되었습니다! Hollo는 ActivityPub을 지원하는 일인 사용자용 마이크로블로그 소프트웨어입니다.

이번 버전의 주요 변경점은 다음과 같습니다.

  • Hollo는 이제 Bun 대신 Node.js 23+을 사용하여 메모리 사용량을 큰 폭으로 줄였습니다.

  • 실험적인 기능 플래그인 TIMELINE_INBOXES를 추가했습니다. 이 기능 플래그를 켜면 타임라인에 보여야 하는 게시물들을 실시간으로 필터링하여 표시하는 대신, 미리 데이터베이스에 저장하게 됩니다. 이 방식은 받아들이는 게시물이 많은 비교적 큰 인스턴스에서 유용하지만, 현재로서는 아직 버그가 있을 수 있습니다. 이 동작은 안정화된 뒤에는 앞으로 기본값이 될 예정입니다.

  • 관리 대시보드에서 계정의 데이터를 CSV로 가져오거나 내보낼 수 있습니다. 팔로하는 계정들, 리스트, 뮤트한 계정들, 차단한 계정들, 책갈피를 지원합니다.

  • 계정 설정에서 계정을 discoverable로 설정할 수 있습니다.

  • 계정에 커버 이미지가 설정되어 있을 경우 프로필 페이지에서 표시됩니다.

  • 그 외 여러 버그가 수정되었습니다.

자세한 내용은 전체 변경 내역을 확인하십시오.

Hollo 0.4.0으로 업그레이드하려면 아래 방법을 따르세요:

github.com

GitHub - dahlia/hollo at stable

Federated single-user microblogging software. Contribute to dahlia/hollo development by creating an account on GitHub.

@hollo@hollo.social

is currently testing .js instead of . (In fact, the hollo.social server is already running on Node.js!) If this test is successful, starting with the next release, Hollo will be powered by Node.js instead of Bun.

The main reason for switching to Node.js is to optimize memory usage. As you can see in the graph image below, Node.js uses significantly less memory than Bun. With this switch, Hollo is expected to be even more lightweight than before!

Are you interested in trying out the Node.js version of Hollo early? Try to pull ghcr.io/dahlia/hollo:0.4.0-dev.290!

Hollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
ALT text

Hollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.

@hollo@hollo.social

Hollo 0.4.0 released! is a single-user federated microblogging software which is -enabled and powered by .

The key changes of this release include:

  • Hollo is now powered by Node.js 23+ instead of Bun for more efficient memory usage.

  • Added an experimental feature flag TIMELINE_INBOXES to store all posts visible to your timeline in the database, rather than filtering them in real-time as they are displayed. This is useful for relatively larger instances with many incoming posts, but as of now it may have several bugs. It is expected to be the default behavior in the future after it is stabilized.

  • Now you can import and export your data from the administration dashboard in CSV format: follows, lists, accounts you muted, accounts you blocked, and bookmarks.

  • You can now make your profile discoverable.

  • The profile page now shows an account's cover image if it has one.

  • Many bug fixes.

For the details, see also the full changelog.

You can upgrade to Hollo 0.4.0 using the following ways:

github.com

GitHub - dahlia/hollo at stable

Federated single-user microblogging software. Contribute to dahlia/hollo development by creating an account on GitHub.

@hollo@hollo.social

is currently testing .js instead of . (In fact, the hollo.social server is already running on Node.js!) If this test is successful, starting with the next release, Hollo will be powered by Node.js instead of Bun.

The main reason for switching to Node.js is to optimize memory usage. As you can see in the graph image below, Node.js uses significantly less memory than Bun. With this switch, Hollo is expected to be even more lightweight than before!

Are you interested in trying out the Node.js version of Hollo early? Try to pull ghcr.io/dahlia/hollo:0.4.0-dev.290!

Hollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
ALT text

Hollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.