洪 民憙 (Hong Minhee)'s avatar

洪 民憙 (Hong Minhee)

@[email protected] · 780 following · 896 followers

An intersectionalist, feminist, and socialist guy living in Seoul (UTC+09:00). Who's behind @fedify, @hollo, and @botkit. Write some free software in , , , & . They/them.

()

WebsiteGitHubBlogFedify

https://hongminhee.org/

https://github.com/dahlia

https://writings.hongminhee.org/

https://fedify.dev/

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

@[email protected] · Reply to lamikennel's post

@lamikennel 【辱說】ですね。単に悪口や罵詈雑言を意味します。

Hollo :hollo:'s avatar
Hollo :hollo:

@[email protected] · Reply to Hollo :hollo:'s post

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

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

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

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

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

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

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

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

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

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

Hollo :hollo:'s avatar
Hollo :hollo:

@[email protected]

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.
Hollo :hollo:'s avatar
Hollo :hollo:

@[email protected] · Reply to Hollo :hollo:'s post

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

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

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

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

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

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

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

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

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

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

Hollo :hollo:'s avatar
Hollo :hollo:

@[email protected]

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.
Hollo :hollo:'s avatar
Hollo :hollo:

@[email protected]

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:

Hollo :hollo:'s avatar
Hollo :hollo:

@[email protected]

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.
botwiki.org's avatar
botwiki.org

@[email protected] · Reply to 洪 民憙 (Hong Minhee)'s post

@hongminhee Very cool!

Just a heads-up though about a somewhat similar (but recently discontinued?) project with the same name.

github.com/howdyai/botkit

kodingwarrior :vim:'s avatar
kodingwarrior :vim:

@[email protected]

github.com/fedi-pipe/fedi-pipe

내맘대로 작업하는 리포....

전국멜로디협회 박김새라🔜12.12(목) 18:30 왕십리역 6출's avatar
전국멜로디협회 박김새라🔜12.12(목) 18:30 왕십리역 6출

@[email protected]

“파행”이 장애인 차별적인 어휘라는 걸 이제 막 알았습니다… 앞으로 꼭 단어의 뜻에 유의하면서 혐오의 단어를 쓰지 않도록 하겠습니다

RE: https://bsky.app/profile/did:plc:5fi7bgxe6svztyolfjkiyctw/post/3lefrv32lts2k

ポット🫖's avatar
ポット🫖

@[email protected] · Reply to 洪 民憙 (Hong Minhee)'s post

A stand-alone AP bot framework might be a great niche that is underserved. I think many Mastodon instances (understandably) aren't enthusiastic about accepting bot accounts.

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

@[email protected] · Reply to 洪 民憙 (Hong Minhee)'s post

FedifyベースのBotKitという名前のフェディバースボットを作成する為のフレームワークをブレーンストーミングしています。Fedifyより柔軟性は劣りますが、より短いコードで簡単なフェディバースボットを作成できる様にするのが目標です。どう思いますか?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@[email protected] · Reply to 洪 民憙 (Hong Minhee)'s post

Fedify 基盤(기반)의 BotKit이라는 이름의 聯合宇宙(연합우주)(fediverse) 봇을 만드는 프레임워크를 브레인스토밍해보고 있어요. Fedify보다 柔軟性(유연성)은 떨어질테지만, 그래도 훨씬 짧은 코드로 簡單(간단)聯合宇宙(연합우주) 봇을 만들 수 있게 하는 게 目標(목표)입니다. 어떻게들 보시나요?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@[email protected]

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@[email protected]

A web UI that allows for easy configuration of . How useful!

https://ghostty.zerebos.com/

역보's avatar
역보

@[email protected]

항공기 사고를 주로 다루는 유튜버 ’다큐9분‘의 코멘트. 참고가 되는 부분이 있어 소개.

> 수십년 분의 항공사고 보고서와 기사를 보며 느낀 것이 있습니다.

> 1. 속보 경쟁을 할 필요가 없습니다. 지난 항공 사고 뉴스를 보면 정말 어처구니 없는 속보가 대부분입니다. 초기에는 오보가 정말 많습니다. 목격담도 대부분 착각입니다. 오보도 굳이 알 필요가 없는 부수적인 것입니다. 궁금한 것이 많겠지만, 지금 단계에서는 모두 추측입니다. 가십거리로 소비하면 안 됩니다.

> 2. 피해 가족에 대한 지원이 필요합니다. 지금 무안으로 피해자 가족들이 급한 마음으로 내려가고 있을 겁니다. 대부분의 사고에서 이 분들은 방치되어 2차적인 피해를 입습니다. 정부도 피해자 가족에 대한 지원을 해야하지만, 시민들도 이 분들을 도와야 합니다. 댓글 하나를 쓸 때도 잠깐 고민하길 바랍니다.

> 3. 희생자들의 존엄성을 지켜줘야 합니다. 희생자들의 존엄성을 무시한 사진과 보도들이 퍼지는 경우가 많습니다. 끔찍한 사고 현장이 뉴스 가치가 있을 수 있지만, 언론들은 윤리준칙에 따라 엄중하게 보도해야 합니다. 다시 한번 말하지만 가십거리로 소비되면 안 됩니다.

> 4. 책임자를 빨리 잡아낼 이유가 없습니다. 책임자가 빨리 드러난다고 더 안전해지는 것이 아닙니다. 누군가의 악의로 사고가 일어나지 않습니다. 차분히 지켜보며, 피해자를 돕고, 다시 같은 일이 일어나지 않게 철저히 조사하는 것이 사고의 상처를 빨리 수습하는 길이 될 것입니다.

> 지금도 목숨을 걸고 구조작업을 하고 있을 구조대를 응원합니다.

m.youtube.com/post/UgkxlyK2mnm

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

@[email protected] · Reply to 洪 民憙 (Hong Minhee)'s post

FedifyベースのBotKitという名前のフェディバースボットを作成する為のフレームワークをブレーンストーミングしています。Fedifyより柔軟性は劣りますが、より短いコードで簡単なフェディバースボットを作成できる様にするのが目標です。どう思いますか?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@[email protected] · Reply to 洪 民憙 (Hong Minhee)'s post

Fedify 基盤(기반)의 BotKit이라는 이름의 聯合宇宙(연합우주)(fediverse) 봇을 만드는 프레임워크를 브레인스토밍해보고 있어요. Fedify보다 柔軟性(유연성)은 떨어질테지만, 그래도 훨씬 짧은 코드로 簡單(간단)聯合宇宙(연합우주) 봇을 만들 수 있게 하는 게 目標(목표)입니다. 어떻게들 보시나요?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@[email protected]

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
NHKニュース 🤖's avatar
NHKニュース 🤖

@[email protected]

韓国 旅客機が滑走路外れフェンス外壁に衝突か 現地メディア - NHKニュース
www3.nhk.or.jp/news/html/20241

뉴스봇 - 사회's avatar
뉴스봇 - 사회

@[email protected]

[속보] 무안공항 항공기 추락…탑승자 28명 사망
무안공항 항공기 추락...탑승자 28명 사망
news.sbs.co.kr/news/endPage.do

International Monitor's avatar
International Monitor

@[email protected]

At least 28 people were dead after an airliner went off the runway and crashed at South Korea's Muan International Airport, Yonhap news agency reported.

The accident occurred as the Jeju Air plane, carrying 175 passengers and six crew on a flight from Thailand, was landing at the airport.

Firefighters carry out extinguishing operations on an aircraft which drove off runaway at Muan International Airport in Muan, South Jeolla Province, South Korea
Daniel Supernault's avatar
Daniel Supernault

@[email protected]

My new laravel-activitypub library is really coming along, and I will be using it for Loops and eventually Pixelfed.

It leverages a lot of Laravel magic to handle many aspects of federation, you simply have to map a few models and attributes in the config file, and it will work with new and existing laravel projects!

Just imagine adding ActivityPub support to your app, while only writing less than 10 lines of code.

It's Magic ✨

github.com/dansup/laravel-acti

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

@[email protected] · Reply to 洪 民憙 (Hong Minhee)'s post

Okay, now hollo.social is hosted on my new Mac mini M4!

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

@[email protected]

TIL Dockerfile has an instruction named HEALTHCHECK.

European Commission's avatar
European Commission

@[email protected]

Today is the day. Welcome to THE charger!

USB-C is officially the common standard for charging electronic devices in the EU.

This means:

🔌The same charger for all new phones, tablets and cameras
⚡ Harmonised fast-charging technology
🔄 Reduced e-waste
🛑 No more “Sorry, I don’t have the right cable”

One charger to rule them all.

A minimalist illustration showing a packaged charger box labeled "one Union one Charger." The box features an image of a blue charger with the European Union flag symbol and a USB-C cable. The scene is set within a holiday theme, with decorative Christmas trees, ornaments, and gift boxes surrounding the charger box. In the top right corner, there is a small EU flag symbol.
Simon Park's avatar
Simon Park

@[email protected] · Reply to Simon Park's post

htmx가 그저 SPA나 자바스크립트에 대한 환멸감으로 나온 밈 수준이라고 생각하지는 않는다. 특히 나는 하이퍼미디어에 대한 이 정도로 진지한 고찰을 REST 이후로 처음 접해보는 것 같다. 복잡한 상태를 관리해야 웹 앱에는 하이퍼미디어 시스템이 어울리지 않겠지만(저자들도 이런 한계를 언급한다.), '비선형적 탐색이 가능한 매체'로서 웹을 사용하고자 한다면 하이퍼미디어는 여전히 최고의 아이디어라고 생각한다.

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

@[email protected] · Reply to Daniel Supernault's post

@dansup I'm so excited for this! Go, go, go!

Daniel Supernault's avatar
Daniel Supernault

@[email protected]

I will write a simple demo app for my new laravel-activitypub library, like @hollo by the amazing @hongminhee

He is such an inspiration, and look forward to reaching out to him for advice in the new year!

My demo app will be called Solo, a simple single user photo sharing project with the easiest installation process!

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

@[email protected] · Reply to KAGAMI🏳️‍🌈🏳️‍⚧️'s post

@saschanaz 그러게 말이예요… ㅋㅋㅋ 아는 분(@limeburst)께서 옆에서 자꾸 부추기시는 데다 학생 할인까지 해주셔서 질러버렸네요

Ufal Salman's avatar
Ufal Salman

@[email protected]

I read a blog post by @[email protected] about their experience about participating and selling paper about fediverse and stuff at a doujin convention in Japan. What an interesting read.
https://writings.hongminhee.org/2024/12/a-year-with-the-fediverse/

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

@[email protected] · Reply to kodingwarrior :vim:'s post

@kodingwarrior Misskey나 Akkoma 같은 게 Markdown 쓸 수 있습니다!

kodingwarrior :vim:'s avatar
kodingwarrior :vim:

@[email protected]

이번에 만드는 중인 플러터 기반의 페디버스 앱은... HTML를 화면에다가 그리는게 좀 빡센 일이었는데 어째저째 잘 되긴 했다.

dart에 html 파서가 다행히 있어서 파싱트리를 만드는 일 자체는 어렵지 않았다. 이젠 렌더러를 정확하게 구현하는게 문제... 일단 돌아는 가는 코드를 짜긴 했다만 테스트 코드를 짜는 전략은 어떻게 들고가는게 좋을까...

Older →