Starting on FEP-ef61 (Portable Objects) in @fedify. It's a @sovtechfund milestone due September 30, and the scope is… substantial. Not a lot of runway. Wish me luck.
Hackers' Pub에 드디어 개인 계정 외에 조직(organization) 계정을 만들 수 있게 되었습니다. 조직 계정은 Hackers' Pub에서 특정 조직·프로젝트의 공식 계정을 만들기 위한 용도입니다. GitHub이나 GitLab, Codeberg 등에서 조직 기능을 사용해 보셨다면, 혹은 Facebook에서 페이지 기능을 사용해 보셨다면, 비슷한 개념으로 받아들이셔도 됩니다. 조직 계정에는 하나 이상의 개인 계정이 속하게 되며, 구성원들 누구나 조직 명의로 단문(note) 및 게시글(article)을 올릴 수 있게 됩니다. 단, 조직 기능은 새 웹 프런트엔드(web-next)에서만 사용 가능합니다.
조직 계정은 개인 계정과 많은 면에서 공통점이 있습니다. 이름과 아바타도 가질 수 있고, 약력(bio)도 입력 가능합니다. 다른 계정을 팔로할 수도 있고, 팔로워도 가질 수 있습니다. 댓글도 쓸 수 있고 에모지 리액션도 달 수 있습니다.
반면, 조직 계정은 개인 계정과는 달리 로그인할 수 없습니다. 로그인 할 수 없으니 이메일이나 패스키 등도 갖지 않습니다. 대신, 조직 구성원의 개인 계정으로 로그인한 뒤, 조직 명의를 선택하는 식으로 동작합니다. 또한, 북마크나 초고(draft)는 여전히 개인 계정에만 저장할 수 있습니다.
여러분 조직·프로젝트의 구성원이 단 한 명이라고 하더라도, 공식 계정을 만들 때는 조직 계정으로 생성하는 것을 권장합니다.
Hackers' Pub에 드디어 개인 계정 외에 조직(organization) 계정을 만들 수 있게 되었습니다. 조직 계정은 Hackers' Pub에서 특정 조직·프로젝트의 공식 계정을 만들기 위한 용도입니다. GitHub이나 GitLab, Codeberg 등에서 조직 기능을 사용해 보셨다면, 혹은 Facebook에서 페이지 기능을 사용해 보셨다면, 비슷한 개념으로 받아들이셔도 됩니다. 조직 계정에는 하나 이상의 개인 계정이 속하게 되며, 구성원들 누구나 조직 명의로 단문(note) 및 게시글(article)을 올릴 수 있게 됩니다. 단, 조직 기능은 새 웹 프런트엔드(web-next)에서만 사용 가능합니다.
조직 계정은 개인 계정과 많은 면에서 공통점이 있습니다. 이름과 아바타도 가질 수 있고, 약력(bio)도 입력 가능합니다. 다른 계정을 팔로할 수도 있고, 팔로워도 가질 수 있습니다. 댓글도 쓸 수 있고 에모지 리액션도 달 수 있습니다.
반면, 조직 계정은 개인 계정과는 달리 로그인할 수 없습니다. 로그인 할 수 없으니 이메일이나 패스키 등도 갖지 않습니다. 대신, 조직 구성원의 개인 계정으로 로그인한 뒤, 조직 명의를 선택하는 식으로 동작합니다. 또한, 북마크나 초고(draft)는 여전히 개인 계정에만 저장할 수 있습니다.
여러분 조직·프로젝트의 구성원이 단 한 명이라고 하더라도, 공식 계정을 만들 때는 조직 계정으로 생성하는 것을 권장합니다.
Pro tip for fediverse developers: you most probably have to look at ActivityPub representations of things a lot. And you most often have these things open in your browser already.
So, add https://browser.pub as a search engine like this, so you could just type "ap " in front of the URL in your address bar to see that object as ActivityPub JSON.
Using BrowserPub instead of curl or a REST API client has the bonus that the request is signed and some servers require that.
Fedify 2.3.0 is out! This release is largely about production observability: OpenTelemetry metrics now cover every major federation path, and a monitoring guide and runnable example stack ship alongside them. Also new: a delivery circuit breaker that holds queued activities for unreachable servers rather than retrying indefinitely; @fedify/backfill, a new package for reconstructing conversations via FEP-f228; and fedify bench, an ActivityPub-aware load testing command. Release notes: https://github.com/fedify-dev/fedify/discussions/821.
Seonbi is a Korean typography tool. It fixes the small things I don't want to handle by hand: curly quotes, spacing around punctuation, hanja annotations, and other Korean prose conventions.
Gukhanmun converts mixed hanja-hangul Korean text into hangul-only output, using the Standard Korean Dictionary. It handles plain text, HTML, and Markdown, with parenthetical or ruby annotations when you need them. There's a CLI, a Rust crate, and a WebAssembly build.
Hongdown is the Markdown formatter I use across most of my own projects. Written in Rust, it enforces an opinionated style for headings, code blocks, lists, links, and East Asian wide characters. There are integrations for Neovim, VS Code, Zed, and Helix.
Upyo is a zero-dependency email sending library for TypeScript. It gives the same API for SMTP, Mailgun, Resend, SendGrid, Amazon SES, and more, so changing email providers doesn't mean rewriting your send code. Works on Node.js, Deno, Bun, and edge functions.
Optique is a type-safe CLI parser for TypeScript. Instead of parsing arguments and then validating them separately, you describe the command shape in code and let TypeScript enforce it.
LogTape is a zero-dependency logging library for TypeScript and JavaScript. It works in Node.js, Deno, Bun, browsers, and edge functions. I made it especially for library authors who want to emit logs without choosing everyone else's logger for them.
Hackers' Pub is a federated social network for developers, built on ActivityPub. Think DEV Community or Zenn, but federated: people can follow you from Mastodon, Misskey, and other fediverse servers. Still invite-only and moving fast, but the code is AGPL-3.0.
Hollo is a single-user fediverse microblogging server, built on Fedify. It's for people who want their own Mastodon-style home without running a whole multi-user instance.
Fedify is a TypeScript/JavaScript library for building fediverse software with ActivityPub. It takes care of the annoying protocol parts: WebFinger, HTTP Signatures, inboxes, outboxes, and NodeInfo. Ghost uses it for their fediverse integration, and the work is backed by the @sovtechfund.
No day job. Just me, building F/OSS full-time on public grants and individual sponsorships. If my work has saved you time, please consider sponsoring me on GitHub: https://github.com/sponsors/dahlia.
I maintain Fedify, Hollo, Hackers' Pub, LogTape, Optique, Upyo, Hongdown, Gukhanmun, and Seonbi. A thread on each ↓
I know mise is basically a watered-down version of Nix, but practically speaking, it's just so much easier to adopt that I keep using it. Lately, I've been using mise in all the F/OSS projects I maintain.
@logtape/lint adds lint rules for ESLint v8/v9 (flat config), Oxlint, and Deno Lint that catch common logging mistakes before they reach production: template literal interpolation in message arguments, eager property evaluation where lazy is needed, unawaited async log callbacks, and missing meta sink configuration.
@logtape/testing gives you createLogRecorder() and domain-aware assertion helpers, replacing the hand-rolled array-sink boilerplate that every project ends up writing.
Other highlights:
context: true on Express/Hono/Koa/Elysia middleware handles request ID generation, x-request-id header propagation, and implicit context. One option instead of several moving parts.
Seven performance optimizations on the enabled-logging hot path
🌐 Multi-language Support Switch between Japanese, English, Chinese, and Korean instantly via the language selector (JA/EN/ZH/KO).
🔤 Translation Feature Translate questions and answers with a single 🌐 click. Uses LibreTranslate via our backend — toggle between original and translated text seamlessly.
Now more accessible to Fediverse users worldwide. Give it a try!