요즘 JSR이 패키지 올릴 때 자주 서버 오류가 난다… 그거 때문에 릴리스 CI 워크플로가 자주 실패함. 이거 이래갖고 npm 대체 할 수 있겠음?
洪 民憙 (Hong Minhee)
@hongminhee@hackers.pub · 974 following · 683 followers
Hi, I'm who's behind Fedify, Hollo, BotKit, and this website, Hackers' Pub! My main account is at
@hongminhee洪 民憙 (Hong Minhee)
.
Fedify, Hollo, BotKit, 그리고 보고 계신 이 사이트 Hackers' Pub을 만들고 있습니다. 제 메인 계정은:
@hongminhee洪 民憙 (Hong Minhee)
.
Fedify、Hollo、BotKit、そしてこのサイト、Hackers' Pubを作っています。私のメインアカウントは「
@hongminhee洪 民憙 (Hong Minhee)
」に。
Website
- hongminhee.org
GitHub
- @dahlia
Hollo
- @hongminhee@hollo.social
DEV
- @hongminhee
velog
- @hongminhee
Qiita
- @hongminhee
Zenn
- @hongminhee
Matrix
- @hongminhee:matrix.org
X
- @hongminhee
종종 코드블록되지 않은 날 것 그대로의 코드를 올린 글을 Threads나 여타 소셜 미디어에서 보다 보면, Hackers'Pub 을 소개시켜 주고 싶은 뽐뿌가 온다.
비슷한 이유로 코드블록을 지원하지 않는 메신저에서 장황한 코드를 공유받다 보면 Discord 나 Slack 쓰자고 하고 싶다. (물론 쓰고 있지만 일부 안쓰는 창구도 있어서..)
@arkjunJuntai Park 공감합니다…
종종 코드블록되지 않은 날 것 그대로의 코드를 올린 글을 Threads나 여타 소셜 미디어에서 보다 보면, Hackers'Pub 을 소개시켜 주고 싶은 뽐뿌가 온다.
비슷한 이유로 코드블록을 지원하지 않는 메신저에서 장황한 코드를 공유받다 보면 Discord 나 Slack 쓰자고 하고 싶다. (물론 쓰고 있지만 일부 안쓰는 창구도 있어서..)
LLM을 적절하게 팀에 도입하는 방법을 모르겠다. (특히 주니어의) 학습과 단련을 위해 LLM을 의도적으로 배제해야 할 필요도 있을텐데... 하지만 LLM 도구를 사용하는 것도 추구해야 할 학습과 단련의 범주에 포함됨.
그리고 조금 다른 이야기지만 프로젝트에 바이브 코딩을 제대로 도입하는건 비가역적인 변화에 가깝다. 결국 사람이 일일히 다 검수하면 그건 비효율적임. 프로젝트에 들이려면 구현체를 어느 정도 블랙박스로 취급하고 테스트 수트 등에 의존해야 하는데, 생각보다 별로라서 돌아가려면 다시 알지도 못하는 코드베이스에 던져져야함. AI를 믿고 쓴다는 가정이었기 때문에 코드 퀄리티와 컨벤션도 장담할 수 없음.
LLM을 적절하게 팀에 도입하는 방법을 모르겠다. (특히 주니어의) 학습과 단련을 위해 LLM을 의도적으로 배제해야 할 필요도 있을텐데... 하지만 LLM 도구를 사용하는 것도 추구해야 할 학습과 단련의 범주에 포함됨.
Github merge queue 이제야 보는데 이걸로 Stacked PR(or Diff) 할수있다고 한 사람 누구야? 관계없잖아...
좋은 내용이였다. 앞으로 에이전트 매니저 역할을 겸해야 하는 개발자들이 생각해볼만한.
Managing implementations you don't understand is a problem as old as civilization. (and every manager in the world already deals with this!) Find an abstraction layer you can verify!
How does a CTO manage an expert? -> Acceptance Tests
How does a PM review an Eng feature? -> Use the product
How does a CEO check the acccountant? -> Spot check key facts
요즘 JSR이 패키지 올릴 때 자주 서버 오류가 난다… 그거 때문에 릴리스 CI 워크플로가 자주 실패함. 이거 이래갖고 npm 대체 할 수 있겠음?
오랜만에 프로그래밍 언어 이야기하러 왔다. 오늘 주제는 타입스크립트의 핵심 가치다.
많은 사람들이 정적 타입 언어를 도입하는 이유로 안전성(Soundness)를 이야기한다. 맞는 말이다. 하지만 타입스크립트에서 안전성은 2등 가치다. 그럼 1등 가치는 뭘까?
바로 개발 경험 개선이다. 구체적으로, 오류 나기 쉬운 구문을 적당히 줄이고 자동 완성을 개선하며 큰 규모 리팩토링 시 심리적(그리고 any 같은 기능을 안 썼다는 가정하에 런타임에도 유의미한 수준의) 안정성을 얻겠다는 거다.
타입스크립트 공식 위키 문서에도 안전성은 목표가 아니라고 나와있다 (#). 우리는 때때로 도구의 목적에 들어맞지 않는 불필요한 기대를 하곤 한다. 하지만 도구 개발자와 싸우는 건 사용자로서 좋은 전략이 아니다.
조건부 타입과 재귀 타입, 템플릿 문자열 타입, infer 등을 보라. 정적 분석 난이도가 지수적으로 올라가는 희한한 기능들이 언어에 계속 추가되는 이유가 무엇인가. 추론을 포기하고 any가 나오곤 하는 이유가 무엇인가.
그들이 추구하는 게 안전한 세계가 아닌 실용적인 세계이기 때문이다.
ZelliJ는 Claude Code 여러개 돌리기에도 좋긴 한데, Fedify 기반의 서비스 만들기에도 괜찮은듯. 탭 여러개 띄워놓고 컨텍스트 스위칭하기보다는 ZelliJ로 화면 분할해놓고 한쪽은 로그 띄우고 한쪽은 fedify cli로 이것저것 테스트해보고
🇯🇵 Japan has officially banned Apple’s iOS browser engine restrictions.
Starting Dec 2025, iPhones must allow real Firefox, Chrome, Opera, Brave, Vivaldi and others to run their own engines, just like on desktop.
This is a major step forward for browser competition.
Full analysis here:
/1
https://open-web-advocacy.org/blog/japan-apple-must-lift-engine-ban-by-december/
이번 주 발표하는 거
발음하기 좀 더 쉽도록 변화를 주면, Hackett이라고도 부를 수 있을 것 같아요. 사람 이름이기도 하고 옷 브랜드 이름이기도 한 이름입니다
We're thrilled to announce Fedify 1.8.1, a mega release made possible through the incredible efforts of contributors from South Korea's #OSSCA (Open Source Contribution Academy). This release marks a significant milestone in #Fedify's development, bringing major architectural changes, new packages, and numerous enhancements across the board.
Note: Version 1.8.0 was skipped due to a versioning error.
🎉 Major Milestone: Monorepo Architecture
Fedify has been restructured as a #monorepo, consolidating all packages into a single repository with unified versioning. This change streamlines development and ensures all packages are released together with consistent version numbers.
Consolidated Packages
All existing Fedify packages now live under one roof:
- @fedify/fedify — Main library
- @fedify/cli — CLI toolchain
- @fedify/amqp — AMQP/RabbitMQ driver
- @fedify/express — Express integration
- @fedify/h3 — h3 framework integration
- @fedify/postgres — PostgreSQL drivers
- @fedify/redis — Redis drivers
🆕 New Packages
This release introduces four new packages to the Fedify ecosystem:
- @fedify/elysia — Elysia integration for Bun-powered applications
- @fedify/nestjs — NestJS integration for enterprise Node.js apps
- @fedify/sqlite — SQLite driver compatible with Bun, Deno, and Node.js
- @fedify/testing — Testing utilities with mock
FederationandContextclasses
@fedify/fedify
Custom Collection Dispatchers
A powerful new feature that allows you to create custom collections beyond the standard ActivityPub collections. This enables implementation of domain-specific collections while maintaining federation compatibility.
Contributors: ChanHaeng Lee [#310, #332]
- Added comprehensive types and interfaces for custom collection handling
- New methods on
Federatableinterface:setCollectionDispatcher()andsetOrderedCollectionDispatcher() - Added
getCollectionUri()method to theContextinterface - Full support for paginated custom collections
Compare-and-Swap (CAS) Support for KV Stores
Key–value stores now optionally support CAS operations for atomic updates, enabling optimistic locking and preventing lost updates in concurrent environments.
- Added optional
KvStore.cas()method - Implemented in
MemoryKvStoreandDenoKvStore - Useful for implementing distributed locks and counters
Fediverse Handle Utilities
New utility functions make working with #fediverse handles more convenient.
Contributors: ChanHaeng Lee [#278]
parseFediverseHandle()— Parse handles into componentsisFediverseHandle()— Validate handle formattoAcctUrl()— Convert handles to URLsFediverseHandleinterface for type safety
Enhanced HTTP Request APIs
Contributors: Lee ByeongJun [#248, #281], Hyunchae Kim [#51, #315]
- Added
LookupWebFingerOptions.maxRedirectionoption for controlling redirect behavior - APIs now support
AbortSignalfor request cancellation - New
DocumentLoaderOptionsinterface - Added
signaloptions toLookupObjectOptions,LookupWebFingerOptions, andDoubleKnockOptions
@fedify/cli
New Commands and Enhancements
The CLI has received significant improvements thanks to our OSSCA contributors:
fedify webfinger Command
Contributors: ChanHaeng Lee [#260, #278], KeunHyeong Park [#311, #328]
Look up WebFinger information for any fediverse resource:
- Supports handles (
@user@server) and URLs --user-agentoption for custom User-Agent headers--allow-private-addressfor local testing--max-redirectionto control redirect following
fedify nodeinfo Command
Contributors: Hyeonseo Kim [#267, #331, #168, #282, #304]
Replaces the deprecated fedify node command with improved terminal rendering.
Enhanced fedify lookup Command
Contributors: Jiwon Kwon [#169, #348, #261, #321]
- Terminal-specific image display for Kitty, WezTerm, Konsole, Warp, Wayst, st, and iTerm
-o/--outputoption to save results to files
Improved fedify inbox Command
Contributors: Hasang Cho [#262, #285], Jang Hanarae [#191, #342]
--actor-nameand--actor-summaryoptions for customizing temporary actors- Now displays object types contained in activities
fedify init --dry-run
Contributors: Lee ByeongJun [#263, #298]
Preview project initialization without creating files.
Better Terminal Support
Contributors: Cho Hasang [#257, #341]
Correctly handles color output based on TTY detection and NO_COLOR environment variable.
@fedify/elysia
Contributors: Hyeonseo Kim [#286, #339]
New Elysia integration brings Fedify to Bun-powered applications with a simple plugin interface:
import { Elysia } from "elysia";
import { fedify } from "@fedify/elysia";
const app = new Elysia()
.use(fedify(federation, { /* options */ }))
.listen(3000);@fedify/nestjs
Contributors: Jaeyeol Lee [#269, #309]
Enterprise-ready NestJS integration with dependency injection support:
import { FedifyModule } from "@fedify/nestjs";
@Module({
imports: [
FedifyModule.forRoot({
kv: new MemoryKvStore(),
queue: new InProcessMessageQueue(),
origin: "https://example.com",
}),
],
})
export class AppModule {}@fedify/sqlite
Contributors: An Subin [#274, #318]
SqliteKvStore implementation compatible across all major JavaScript runtimes:
import { SqliteKvStore } from "@fedify/sqlite";
const kv = new SqliteKvStore("./fedify.db");@fedify/testing
Contributors: Lee ByeongJun [#197, #283]
Comprehensive testing utilities with mocking support for Fedify applications:
import { MockFederation, MockContext } from "@fedify/testing";
const mockFederation = new MockFederation();
const mockContext = new MockContext();
// Track sent activities with full metadata
// Support custom path registration
// Multiple activity type listeners🙏 Acknowledgments
This release represents an extraordinary community effort, particularly from the participants of South Korea's OSSCA (Open Source Contribution Academy) (Note: page in Korean). We extend our heartfelt thanks to all contributors:
Core Contributors
- ChanHaeng Lee (
@2chanhaeng초무) — Custom collections, fediverse handles, WebFinger command
- Lee ByeongJun (
@joonnotnotJoon) — WebFinger redirections, dry-run, testing utilities
- Hyunchae Kim (
@r4bb1t) — AbortSignal support
- Hyeonseo Kim (
@gaebalgom개발곰) — Elysia integration, nodeinfo command - Jaeyeol Lee (
@kodingwarriorJaeyeol Lee) — NestJS integration - An Subin (
@nyeongAn Nyeong (安寧)) — SQLite driver - Jiwon Kwon (
@z9mb1wwj) — Terminal image display, output options - Hasang Cho (
@crohasang크롸상) — Color output handling, actor customization - Jang Hanarae (
@meneleHanal Ae) — Activity object type display - KeunHyeong Park (
@w8385박근형) — WebFinger redirect options
Test Infrastructure Contributors
- Oh Daeun (
@ooheundaoed) — Fixed PostgreSQL test race conditions [#346, #350] - Song Hanseo (
@songbirds) — Test stability improvements for Redis and code generation [#344, #347] - Kim Jonghyeon (
@woaol벨) — CLI version management and documentation fixes [#306, #329, #330, #343]
Your contributions have made Fedify stronger and more versatile than ever. The OSSCA program's support has been instrumental in achieving this milestone release.
Migration Guide
Updating from Previous Versions
If you're using separate Fedify packages, update all packages to version 1.8.1:
{
"dependencies": {
"@fedify/fedify": "^1.8.1",
"@fedify/cli": "^1.8.1",
"@fedify/express": "^1.8.1"
}
}All packages now share the same version number, simplifying dependency management.
Breaking Changes
There are no breaking changes in this release. All existing code should continue to work without modifications.
What's Next
With the monorepo structure in place and new integrations available, we're excited to continue improving Fedify's developer experience and expanding its capabilities. Stay tuned for more updates, and thank you for being part of the Fedify community!
For detailed technical information about all changes, please refer to the full changelog.
Fedify is an open-source project that helps developers build federated server applications powered by ActivityPub. Join us on GitHub or Discord to contribute or get help!
어쩔때는 Zed가 좋은 것 같은데, 어쩔 때는 Neovim이 좋음. 수제코딩할때 Zed랑 Neovim이랑 아등바등하게 괜찮은데, 빠릿빠릿하고 에디터 환경에 대한 제어권이 온전히 나에게 있는 것을 꼽자면 Neovim. 플러그인이 사실상 0인데, 있을 것들은 다 들어가 있고 수제로 코딩하는 맛이 타격감이 괜찮은건 Vim 모드가 가미된 Zed.... 프로젝트를 할 때는 Neovim을 주로 쓰기는 하지만, 학습할때는 Zed를 쓰는 빈도가 좀 있는 듯.
지금 만들고 있는 NestJS 기반의 연합우주 앱도 의도적으로 Zed로 수제코딩 하고 있음. 퐝션? 그런거 쓰지 마세요
Hackitty's Paw
이제 온 연합이 지켜보고 있어서 더 이상 쓰레기 코드를 짤 수 없다
그나저나 Hackers' Pub 마스코트 고양이에 아직 이름이 없는데, 어떤 이름을 지어 주면 좋을까요? 🤔
@hongminhee洪 民憙 (Hong Minhee) 핵캣 (Hackat 혹은 Hackcat)
오늘의 디버그 일기 자꾸 액펍아카데미랑 플래닛에서 요청을 보내도 씹었다 근데 액티비티 워크샵에서 수동요청 만드니까 잘 받아줬다 알고보니 액터 디스패쳐에서 inbox를 http로 던져줘서 그런 거였다...
오늘의 디버그 일기 자꾸 액펍아카데미랑 플래닛에서 요청을 보내도 씹었다 근데 액티비티 워크샵에서 수동요청 만드니까 잘 받아줬다 알고보니 액터 디스패쳐에서 inbox를 http로 던져줘서 그런 거였다...
@hongminhee洪 民憙 (Hong Minhee) pub을 좀 더 살려서 puppy라 합시다
@kodingwarriorJaeyeol Lee 너무 강아지 같잖아요 ㅋㅋㅋ
그나저나 Hackers' Pub 마스코트 고양이에 아직 이름이 없는데, 어떤 이름을 지어 주면 좋을까요? 🤔
@hongminhee洪 民憙 (Hong Minhee) pub을 좀 더 살려서 puppy라 합시다
Hackers' Pub 스티커 왔다!
@hongminhee洪 民憙 (Hong Minhee) 펍냥이 잘 쓰겠습니다 ㅋㅋㅋ
해커스펍 고양이는 해커 + 네코 해서 헤코(HECKO) 라고 하면 좋겠지만 L33T로 H3CKO라고 하는건 어떨까 하고 생각한다
역시 내 작명센스는 괴멸적이다
그나저나 Hackers' Pub 마스코트 고양이에 아직 이름이 없는데, 어떤 이름을 지어 주면 좋을까요? 🤔
어라 사진이 안 올라갔네. 해커스펍 로고 스티커 오백장이 왔습니다! 빵빠레!
그나저나 Hackers' Pub 마스코트 고양이에 아직 이름이 없는데, 어떤 이름을 지어 주면 좋을까요? 🤔
@hongminhee洪 民憙 (Hong Minhee) ~~해커네코 줄여서 헤코~~
그나저나 Hackers' Pub 마스코트 고양이에 아직 이름이 없는데, 어떤 이름을 지어 주면 좋을까요? 🤔
그나저나 Hackers' Pub 마스코트 고양이에 아직 이름이 없는데, 어떤 이름을 지어 주면 좋을까요? 🤔
그나저나 Hackers' Pub 마스코트 고양이에 아직 이름이 없는데, 어떤 이름을 지어 주면 좋을까요? 🤔
Lots of talk about Ghost today, and rightly so, but don’t forget that a little open source framework @fedifyFedify: ActivityPub server framework made the ActivityPub plugin possible.
Support open source!
We'd like to recognize some excellent contributions from our #OSSCA (Open Source Contribution Academy) participants who have been working on #Fedify.
@gaebalgom개발곰 contributed PR #339, which introduces the @fedify/elysia package to provide Elysia integration for Fedify. This work addresses issue #286 by creating a plugin that enables developers using #Bun and #Elysia to integrate Fedify's #ActivityPub capabilities into their applications. The contribution includes the core integration module, documentation, examples, and proper monorepo configuration, making Fedify accessible to the Elysia community.
@r4bb1t submitted PR #315, implementing comprehensive
AbortSignal support across multiple APIs to resolve issue #51. This contribution adds request cancellation capabilities not only to lookupWebFinger() but also to lookupObject(), DocumentLoader, and the HTTP signature authentication flow (doubleKnock()), allowing developers to properly handle timeouts and abort ongoing requests throughout the entire request chain. The implementation includes extensive test coverage for cancellation scenarios across all affected components and lays the groundwork for adding --timeout options to various CLI commands like fedify lookup, fedify webfinger, and fedify nodeinfo, making federated applications more robust and responsive.
@ooheundaoed addressed a testing infrastructure issue with PR #350, fixing a race condition in PostgreSQL message queue tests that was causing intermittent failures (issue #346). By adding explicit initialization before concurrent message queue listeners, this fix prevents table creation conflicts that were affecting test reliability, ensuring more consistent PR testing for all contributors.
@songbirds provided two test stability improvements with PR #344 and PR #347. The first PR adds skip guards to RedisKvStore tests as a workaround for a known Bun runtime issue, keeping the test suite functional while awaiting an upstream fix. The second PR resolves a race condition in the code generation process by randomizing output filenames, preventing conflicts during parallel test execution. These contributions help maintain a stable testing environment for the project.
Thank you all for your contributions to Fedify. Your work helps make federated social networking more accessible to developers.
아.. 저 승질 머리 고양이, 득 해야 하는데...해펍 모임은 언제인가요?
@lionhairdino 아마도
@kodingwarriorJaeyeol Lee 님께서 올해 내 모임을 생각 중이신 걸로…
아.. 저 승질 머리 고양이, 득 해야 하는데...해펍 모임은 언제인가요?
xv6 부팅에 릭롤링 끼얹기. 재밋잖아~ 한잔해~
Python 기반의 교육용 DBMS인 BlueBase라는걸 만들고 있습니다. 언젠가... 언젠가 공개하겠습니다. 제 과목 수강생이 아니더라도 누구나 해볼 수 있게, GitHub Classroom 기능을 이용해볼 예정입니다.
맥 마이그레이션을 할 땐 썬더볼트 케이블을 사용하기로 해요.
@aiooAhn Kiwook 새로 사셨나요?!
맥 마이그레이션을 할 땐 썬더볼트 케이블을 사용하기로 해요.
modern-screenshot 이란 물건을 접하게 됐는데 얘는 html-to-image 로부터 포크 떠진 아이이고, 걔는 또 dom-to-image 로부터 포크 떠진 아이인데 vercel satori 가 더 낫다는 얘기도 본 것 같다. 한편, 우리 팀은 html2canvas 로부터 포크 뜬 html2canvas-pro 를 써보고 있었으며... (정신 없음)
전 개인적으로 LINQPad를 정말 좋아하는데요, LINQPad 9 Beta 버전에서 새롭게 강화된 JavaScript Interop과 내장된 WebView 지원 덕에 C# 코드 레벨에서 ESM 모듈을 불러와 사용하는 것도 훌륭하게 소화 가능합니다. 이 코드는 LINQPad 밖에서는 WebView2를 대상으로도 쓸 수 있습니다.
これは欲しい、欲しくてたまらない。😂
@hongminhee洪 民憙 (Hong Minhee) 몇개 주문하셨나요 👀👀👀
@kodingwarriorJaeyeol Lee 500장 주문했어요
Hackers' Pub 스티커 왔다!
시간 날 때 언어 관련 툴링들을 어떻게 구현하는지에 대한 글을 써봐야겠다. 린터, 테스트 커버리지, 프로파일러, 디버거에 대해 써보고 싶지만 과연 나의 게으름이 잘 버텨줄지는 모르겠다
洪 民憙 (Hong Minhee) shared the below article:
OSTEP 독학 일지 - H.0.
Jaeyeol Lee @kodingwarrior@hackers.pub
6년 차 개발자가 기본기를 다지기 위해 OS 기초를 다시 공부하는 여정을 담은 글입니다. 저자는 신입 개발자 수준의 기본기를 갖추기 위해 OSTEP 교재를 선택하고, xv6 프로젝트를 통해 운영체제 동작 원리를 체화하고자 합니다. 이 글에서는 xv6 과제들을 단계별로 공략하며 겪는 우여곡절과 발견, 그리고 이를 통해 얻는 인사이트를 서사적으로 풀어낼 계획을 밝힙니다. 단순히 지식을 정리하는 것을 넘어, 독자에게 재미있는 스토리를 전달하고 기술 면접에도 도움이 될 만한 생생한 경험을 공유하고자 하는 저자의 의지가 돋보입니다. OSSCA 2025 멘토링 경험에서 영감을 받아 시작된 이 여정은, 개발자로서의 성장과 더불어 해커스펍 커뮤니티에도 기여하고자 하는 저자의 열정을 보여줍니다.
Read more →3년 전에
@disjukrㄹ 님에게 받아 묵혀두었던 misaka.moe 도메인 어디 쓸만한데 없을까 계속 미루만 있다가 임시로 제 레포지토리에 리다이렉션 걸었습니다. 예) https://misaka.moe/.dotfiles
웹 서버 프레임워크를 밑바닥에서부터 직접 만들고(!!!!) 거기다가 fedify 끼얹으면 재밌는 챌린지가 될 듯
@hongminhee洪 民憙 (Hong Minhee) 지금까지 살펴본 바로 관리자 계정만 팔로우를 관리할 수 있게 되어있는듯 합니다.
@rkttu남정현 앗… 그렇군요. 😅


















