Jaeyeol Lee

@kodingwarrior@hackers.pub · 500 following · 394 followers

Neovim Super villain. 풀스택 엔지니어 내지는 프로덕트 엔지니어라고 스스로를 소개하지만 사실상 잡부를 담당하는 사람. CLI 도구를 만드는 것에 관심이 많습니다.

Hackers' Pub에서는 자발적으로 바이럴을 담당하고 있는 사람. Hackers' Pub의 무궁무진한 발전 가능성을 믿습니다.

그 외에도 개발자 커뮤니티 생태계에 다양한 시도들을 합니다. 지금은 https://vim.kr / https://fedidev.kr 디스코드 운영 중

Blog
kodingwarrior.github.io
mastodon
@kodingwarrior@silicon.moe
Github
@malkoG

진짜 디자인 하고싶은대로 다 하고 있는데, 누군가가 보다 못해서 "차라리 내가 하고 만다" 하고 자원을 해주지 않을까(?)

8
6

- 마틴 파울러는 LLM이 소프트웨어 개발에 미치는 영향을 논의하며, 자동완성을 넘어선 다양한 사용 워크플로우를 놓치고 있다고 지적

- 프로그래밍 역할의 미래에 대한 질문들은 여전히 정답이 없음

- AI가 과거 기술 발전과 같은 버블 상태임을 확인

- LLM을 신뢰성을 위해 여러 번 질의해야 하는 "환각 엔진"으로 강조

- 특히 AI 에이전트가 개인 데이터와 신뢰할 수 없는 콘텐츠에 접근할 때의 보안 위험을 경고

Some thoughts on LLMs and Software Development

https://martinfowler.com/articles/202508-ai-thoughts.html

0
0

We're excited to announce the release of BotKit 0.3.0! This release marks a significant milestone as now supports .js alongside , making it accessible to a wider audience. The minimum required Node.js version is 22.0.0. This dual-runtime support means you can now choose your preferred runtime while building with the same powerful BotKit APIs.

One of the most requested features has landed: poll support! You can now create interactive polls in your messages, allowing followers to vote on questions with single or multiple-choice options. Polls are represented as ActivityPub Question objects with proper expiration times, and your bot can react to votes through the new onVote event handler. This feature enhances engagement possibilities and brings BotKit to feature parity with major platforms like Mastodon and Misskey.

// Create a poll with multiple choices
await session.publish(text`What's your favorite programming language?`, {
  class: Question,
  poll: {
    multiple: true,  // Allow multiple selections
    options: ["JavaScript", "TypeScript", "Python", "Rust"],
    endTime: Temporal.Now.instant().add({ hours: 24 }),
  },
});

// Handle votes
bot.onVote = async (session, vote) => {
  console.log(`${vote.actor} voted for "${vote.option}"`);
};

The web frontend has been enhanced with a new followers page, thanks to the contribution from Hyeonseo Kim (@gaebalgom개발곰)! The /followers route now displays a paginated list of your bot's followers, and the follower count on the main profile page is now clickable, providing better visibility into your bot's audience. This improvement makes the web interface more complete and user-friendly.

For developers looking for alternative storage backends, we've introduced the SqliteRepository through the new @fedify/botkit-sqlite package. This provides a production-ready SQLite-based storage solution with ACID compliance, write-ahead logging (WAL) for optimal performance, and proper indexing. Additionally, the new @fedify/botkit/repository module offers MemoryCachedRepository for adding an in-memory cache layer on top of any repository implementation, improving read performance for frequently accessed data.

This release also includes an important security update: we've upgraded to 1.8.8, ensuring your bots stay secure and compatible with the latest ActivityPub standards. The repository pattern has been expanded with new interfaces and types like RepositoryGetMessagesOptions, RepositoryGetFollowersOptions, and proper support for polls storage through the KvStoreRepositoryPrefixes.polls option, providing more flexibility for custom implementations.

2
1
0

GPT-5가 어려운 문제에 있어서는 오히려 Claude Opus 4.1보다 낫다기에 한 번 써보고 있는데, Claude Code로는 당연하게도 GPT-5 모델을 못 쓰니 대신 Crush를 써보고 있다. 일단 첫인상으로는 MCP 외에도 LSP를 지원하는 게 마음에 든다. 바로 deno lsp를 연결해서 써보고 있다.

WezTerm 안에서 LLM 코딩 에이전트인 Crush를 사용하여 Optique 작업을 하는 모습. 사용중인 모델은 GPT-5 Reasoning Minimal이다. LSP로 Deno가 켜져 있고, MCP로 Context7 및 GitHub가 켜져 있다.
5

[🍏매장 이용안내]
최근 튜사 방문객 급증으로 Wi-fi가 끈기는 현상이 자주발생돼 공유기를 추가하였습니다.
Wi-fi 연결 목록 추가, Wi-fi명, 비밀번호가 변경 되었습니다.
방문하실 때 참고해주세요. 기존Wi-fi는 연결이 안됩니다.
비밀번호는 매장에 업데이트 해놨습니다.

🍏 tusa앨런튜링
→ 컴퓨터과학의 선구자, 암호해독의 전설.
“AI는 사람을 흉내 내는 걸로 시작한다.” — 지능과 논리가 흐르는 곳.

🍏tusa리누스토발즈
→ 리눅스 커널의 창시자, 오픈소스의 상징.
“코드는 공유되기 위해 태어났다.” — 리누스다운 개방형 개발존.

🍏tusa스티브워즈니악
→ 애플 1호기를 손수 만든 하드웨어 천재.
“개발은 Garage에서 시작된다.” — 납땜 냄새가 날 것 같은 공간.

🍏 tusa제임스고슬링
→ 자바(Java)의 창시자, 객체지향의 아버지.
“한 번 작성, 어디서나 실행.” — 안정성과 몰입을 위한 고슬링존.

3

[홍보글]👍
튜사에서 ASUS 제품을 경험해보실 수 있습니다. ASUS ProArt 모니터, AUS ROG 키보드까지 노트북, 마우스만 가지고 오시면 최적의 작업공간이 탄생됩니다! 그외 다양한 키보드와 모니터암까지 셋팅해놨으니 놀러오세요!

ASUS ROG 키보드 공동구매 진행중!
(튜사만 진행하는 최저가!)

공구참여!
discord.gg/KAJYgRY7tr

2
6
0
0

React is Simple!

Think React state is easy? One wrong move and your counter breaks.

Why It Happens

React batches state updates.
Using setState(state + 1) can overwrite updates with stale values.
The functional form setState(prev => prev + 1) ensures correctness.

Don't

const [count, setCount] = useState(0);

setCount(count + 1);
setCount(count + 1); 
// ❌ Result: count = 1

Do

const [count, setCount] = useState(0);

setCount(prev => prev + 1);
setCount(prev => prev + 1);
// ✅ Result: count = 2

Explanation

  • setCount(count + 1) → uses an old snapshot of state.
  • setCount(prev => prev + 1) → React passes the freshest value.

Updating state without prev is like asking for “one more slice” 🍕…
but the box already got emptied. Always ask from the current box.

4

요즘 새로 배운 이것저것...

  • gerrit이라는 10년 전부터 존재하던 rebase, stacked-pr workflow를 지원하는 git remote가 있다
  • 커널 개발하는 변태들이 쓰는 mailing-list workflow는 사실 rebase, stacked-pr workflow와 매우 유사하다
  • EU쪽에도 jj 기반의 탈 github 개발자 허브를 만들려는 움직임이 있는듯. (개인적으론 tangled.sh가 더 유력해보임)

가장 놀랐던건 mailing-list workflow... 이거 진짜 생각보다 나쁘지 않은 것 같기도, tangled.sh에서 mailing-list를 지원할 수 있다면, gh 같은 별도의 cli 툴 없이도, 협업까지 터미널에서 처리할 수 있어보임.

1

오이카페에 ActivityPub 지원이 들어갔습니다. 이제 좋아하는 작가나 커뮤니티의 새 그림을 연합우주에서도 받아 보세요!

작가 프로필이나 커뮤니티 메인 페이지에서 ActivityPub 핸들을 확인할 수 있습니다.

인용된 그림은 ActivityPub 연동을 도와주신 @hongminhee洪 民憙 (Hong Minhee) 님이 오이카페 초창기에 그려 주신 고양이 그림입니다. 감사합니다!

14
1
0

Ask HN: 소프트웨어 설계를 배우기에 좋은 최고의 코드베이스는 무엇인가요?
------------------------------
- 소프트웨어 설계 능력을 향상시키고자 노력하고 있는데, 기존의 잘 설계된 코드베이스를 연구해 보라는 권유를 받았음
- 공개적으로 접근 가능한 코드베이스 중 소프트웨어 설계의 골드 스탠다드로 여겨지는 것은 어떤게 있는지 궁금함
## 1\. *추천 코드베이스*
- *대형/대표 프로젝트*
- Git, Postg…
------------------------------
https://news.hada.io/topic?id=22729&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

0

안녕하세요. 닷넷데브 운영진 남정현입니다.

닷넷 개발자와 클라우드 엔지니어의 만남, .NET Universe CloudBro Edition에서 시작합니다!

이번 컨퍼런스에서는 개발자를 위한 DevOps 도구인 Aspire와 .NET 10의 강력한 DX를 완성하는 File-based App 기반을 새롭게 소개하며, Container, Kubernetes, Observability 등에 관한 업계 동향, 인사이트를 종합적으로 알아보실 수 있는 세션으로 구성될 예정입니다.

이번 미니 컨퍼런스는 다음주 목요일 (9/4) 저녁 6시 30분터 9시 30분까지, 역삼동 마루360 지하1층 성장 세미나룸에서 열립니다. 평소 데브옵스 기술과 컨테이너 기술에 관심이 많으셨던 분들께 인사이트를 드릴 수 있는 알찬 세션으로 구성하였습니다.

좌석이 한정되어 있어 빠른 신청이 필요합니다. 지금 바로 신청해주세요!

등록하기: https://event-us.kr/dotnetdev/event/110640

2

Today is the new semester for @CMUDBCMU Database Group's Intro to Database Systems! We're going harder into material than ever before. Projects are more challenging but you can use LLMs to help. We also have 10min talks each Wed from leading DB companies. Follow from home/prison on YouTube: 15445.courses.cs.cmu.edu/fall2

Everything is available for free to non-CMU students:
• Lectures on YouTube: youtube.com/playlist?list=PLSE
• Slides + Notes + Homeworks on course website.
• Project source code on GitHub: github.com/cmu-db/bustub
• Grading with Gradescope (see FAQ ➡️ 15445.courses.cs.cmu.edu/fall2)

Special thank you to our Affiliate companies for their support this academic year:
• ClickHouse
• DataStax
• dbt Labs
• Firebolt
• MotherDuck
• RelationalAI
• SingleStore
• SpiralDB
• PingCAP / TiDB
• Yellowbrick
• Yugabyte

How can people not enrolled in the class test their projects?
All of the source code for the projects are available on Github. There is a Gradescope submission site available to non-CMU students.CMU-DB 2025 Industry Affiliate Program Members
https://db.cs.cmu.edu/affiliates/
1
0
0
3
0
0
1

https://youtu.be/rVfRFd_26Q0?si=bkQhKROnEK2U8F22

김태호 작가의 인터뷰를 보면서 부끄러워졌다. 나는 훈련하고 있나? 집중 하고 있나? 생각해보면 그렇지 않은 채 달리고만 있었던 것 같다. 나도 50대 후반에 최고의 무언가를 만들고 싶고, 그러려면 지금부터라도 훈련을 시작해야겠다.

2
11
1
0
2
0

Jaeyeol Lee shared the below article:

7가지 동시성 모델

정진명의 굳이 써서 남기는 생각 @jm@guji.jjme.me

서지정보

서명: 7가지 동시성 모델
저자: 폴 부처(Paul Butcher)
역자: 임백준
출판사: 한빛미디어
출간일: 2016년 7월 15일
원서명: Seven Concurrency Models in Seven Weeks: When Threads Unravel
원서 출간일: 2014년

생각

『7가지 동시성 모델』은 『한국신화를 찾아 떠나는 여행』 다음으로 읽는 빌린책챌린지 책입니다. 뜬금없이 프로그래밍 도서로 뛰었지요. 최근에 관련된 업무를 하게 되어 손이 이 쪽으로 왔습니다. 시리즈의 전작이라고 할 수 있는 『브루스 테이트의 세븐 랭귀지』를 좋아하기도 했어서, 비슷한 감각으로 배울 수 있는 게 있을 거라 생각했습니다.

제가 전문적으로 프로그래밍을 익힌 분야는 기본적으로 과학적 계산(Scientific Computing) 중 일부분이고, 또 학계에 한정되어 있기도 해서 일반적으로 업계에서 프로그램을 작성하는 직무에 필요한 사고방식과 고려해야 할 문제에 익숙하다고 하기는 어렵습니다. 그래도 나름 산업적으로 활용되는 분야라 슈퍼컴퓨팅센터 같은 곳에 기웃거리면서 GPGPU니 병렬계산이니 하는 개념을 익히기도 했지만, 아무튼 제 졸업논문에 들어간 계산 정도는 병렬 계산은 커녕 순차적으로 실행되는 CPU 프로그램만으로도 충분했습니다.

그런 면에서 저는 코드의 흐름이 비동기적이 되는 부분부터 어려움을 느끼고, await/async, Promise, 뭐 이런 걸 정말 필요한 정도로만 알고 있습니다. 병렬 처리, 멀티스레딩 같은 건 말할 것도 없죠. 그런 점에서, 제가 모르는 영역에서 그래도 아는 키워드를 조금이라도 넓혀나가고 싶다는 것이 이 책을 집게 된 이유입니다.

이 책은 말 그대로 프로그래밍의 세계에서 동시성을 다루는 일곱 가지 모델을 다룹니다. 영어 제목에서는 좀 더 드러나지만, 7주간 금요일, 토요일, 일요일 분량을 읽고 실습하면서 개념을 익혀나가는 구성이지요. 스레드와 락, 함수형 프로그래밍, 클로저의 모티베이션, 액터, 채널, GPGPU, 맵리듀스와 하둡… 하나의 흐름으로 설명하기 어려운 프로그램들의 여러 측면을 다룬다고 할 수 있겠습니다.

원래 이 책을 읽는 방법은 이 책이 다루고 있는 예제 코드를 직접 돌려보고 연습 문제를 풀어보는 것이겠지만, 전작과 달리 그러지는 못했습니다. 그만큼 이해는 얕을 수밖에 없겠지만, 뭐 어쩔 수 없지요. 나중에 제게 이 책의 내용이 필요한 일이 온다면, 이런 개념이 어떻게 불린다는 것, 그리고 어디서 찾아야 할지는 이제 익혔으니 그 때 다시 돌아와서 머리를 싸매야겠지요.

Read more →
0

Jaeyeol Lee shared the below article:

Optique: 타입 안전한 CLI 파서 컴비네이터

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub

이 글에서는 Haskell의 `optparse-applicative`와 TypeScript의 Zod에서 영감을 받아 제작된 새로운 CLI 파서 라이브러리인 Optique를 소개합니다. Optique는 파서 컴비네이터를 활용하여 CLI의 구조를 레고 블록처럼 조립할 수 있게 해줍니다. `option()`, `optional()`, `multiple()`, `or()`, `object()`, `constant()`, `command()`, `argument()` 등의 다양한 파서와 컴비네이터를 통해 복잡한 CLI 구조를 유연하게 정의할 수 있습니다. 특히, `or()`와 `object()` 컴비네이터를 사용하여 상호 배타적인 옵션이나 서브커맨드를 쉽게 구현하는 방법을 예제를 통해 설명합니다. Optique는 단순한 CLI 파서 역할에 집중하고 있어 모든 기능을 제공하지는 않지만, 복잡한 CLI 구조를 표현하는 데 유용하며, 소개 문서와 튜토리얼을 통해 더 자세한 내용을 확인할 수 있습니다.

Read more →
13
2
2

박사과정을 하면 한번쯤은 내가 교수가 된다면 뭘 해볼까 생각해보게 되는 것 같다. 나의 경우에는 FPGA를 하나 사서 하드웨어부터 Verilog로 짜올려서 운영체제, 컴파일러를 만들고 C로 ray tracing을 짜는 두 학기짜리 프로젝트 과목을 해보고 싶다…만 이러면 조교가 죽어나갈 것을 알기에 꿈만 꿔본다.

14

First (non-reply!) post here at the lovely mastodon.illumos.cafe.

I run old SunOS/Solaris on retrocomputers, and modern Tribblix for fun! This account will be for sharing my exploits on these systems.

Thanks again to the wonderful Stefano Marinelli for making this possible.

rubenerd.com/run-illumos-the-c

0
4

Jaeyeol Lee shared the below article:

파서 콤비네이터: 하스켈 초보자를 위한 파싱

박준규 @curry@hackers.pub

이 글은 하스켈 초보자를 위한 파서 컴비네이터에 대한 입문 튜토리얼입니다. 파싱은 프로그래밍에서 흔히 발생하는 작업이지만, 정규 표현식이나 문자열 조작만으로는 복잡한 형식을 다루기 어렵습니다. 저자는 `Text.ParserCombinators.ReadP` 라이브러리를 사용하여 파서 컴비네이터를 소개하고, 이를 통해 더 읽기 쉽고 유지보수가 용이한 파서를 작성할 수 있음을 보여줍니다. METAR 보고서 파싱 예제를 통해 `satisfy`, `many1`, `<|>`, `option` 등의 기본적인 파서 콤비네이터 함수를 설명하고, 펑터와 모나드의 개념을 활용하여 파서를 구성하는 방법을 안내합니다. 또한, 파싱된 데이터의 유효성을 검사하고, 결과를 더 의미 있는 데이터 타입으로 변환하는 방법을 제시합니다. 이 튜토리얼을 통해 독자는 파서 컴비네이터의 기본 원리를 이해하고, 실제 데이터 파싱 작업에 적용할 수 있는 능력을 얻게 됩니다. 마지막으로, 저자는 독자들에게 배운 내용을 바탕으로 전체 METAR 보고서를 파싱하는 라이브러리를 만들어 Hackage에 제출해 볼 것을 권장하며, 파서가 없는 데이터를 만났을 때 `ReadP`를 자신 있게 사용할 수 있기를 바랍니다.

Read more →
11
7
7
9

Perl을 만든 언어학자 Larry Wall이 쓴 글 중에 종종 다시 읽어 보는 글

Human languages therefore differ not so much in what you can say but in what you must say. In English, you are forced to differentiate singular from plural. In Japanese, you don’t have to distinguish singular from plural, but you do have to pick a specific level of politeness, taking into account not only your degree of respect for the person you’re talking to, but also your degree of respect for the person or thing you’re talking about.

Programming is Hard, Let's Go Scripting...

그렇기 때문에 사람의 언어는 당신이 그렇다고 생각하고 있던 것과는 많이 다르다. 영어로 얘기할때는 단수와 복수를 확실히 구분해야만 한다. 일본어에서는, 단수와 복수를 구분할 필요는 없지만, 정중함의 정도를 조절할 줄 알아야 한다. 즉, 상대방에 대한 존경을 표현할 수 있는 정도를 선택해야 하고, 상대방의 입장에서 내가 존중 받아야 하는 정도를 생각해서 말해야 한다.

프로그래밍은 어렵다, 스크립팅의 세계로 가보자...

6

정보 리터러시 관련 의견을 보존하러 왔다. 우리는 흔히 영어 자료가 한국어 자료보다 낫다는 문화사대주의적 의견에 공감하곤 한다. 하지만 여기엔 숨은 의견이 여럿 있다. 하나씩 까보며 음미해보자.

영어 자료는 한국어 자료보다 낫다. => 왜 나을까? 도움이 되기 때문에. 왜 도움이 될까? => (진실에 가깝기 때문에, 다양한 경험이 전시되어 있기 때문에). 왜 진실에 가까울까? => 1차 출처에 가깝기 때문에. 왜 1차 출처에 가까울까? => 사용자가 다수이기 때문에 직접 사용하거나 번역되어 2차 출처로 기능하기 때문에. 왜 다양한 경험이 있을까? => 생산자가 자료 작성 시 영어를 선택할 확률이 한국어보다 높기 때문에.

그렇다면 우리는 영어 자료가 나은 이유를 구체적으로 표현할 수 있다.

  • (일반적으로) 한국어 웹보다 영어 웹이 더 크기 때문에 원하는 자료를 구할 확률이 더 높다.
  • (일반적으로) 한국어 웹보다 영어 웹에서 1차 출처에 가까운 자료를 구할 확률이 더 높다.

탐색 공간을 넓히고, 정보 전파 과정에서의 왜곡을 줄이기 위해서 영어 웹 탐색이 효과적이다. 다만 영어 웹이 "언제나" 좋은 건 아니다. 한컴오피스 자료가 미국에 많겠는가, 아니면 한국에 많겠는가? 1차 출처에 가까운 곳을 향해 왜곡을 줄이고, 그 안에서 탐색 공간을 최대한 효율적으로 넓혀야 한다.

영어 검색이라는 피상적인 행위에서 벗어나 정보 탐색의 본질을 좇는 것이 좋다.

11
0
0
0

https://t.co/93TfrsznNC

좋은 내용이였다. 앞으로 에이전트 매니저 역할을 겸해야 하는 개발자들이 생각해볼만한.

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

2

추천받은 집으로 저녁 먹으러 갔는데 무슨 입구 거의 바로 앞에 사각지대 낭낭한 주차장 출입구 있어서 이 정도는 해야 둘이 먹다 하나 죽어도 모를 맛집 되는구나... 하고 감탄했어

1

We're thrilled to announce Fedify 1.8.1, a mega release made possible through the incredible efforts of contributors from South Korea's (Open Source Contribution Academy). This release marks a significant milestone in '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 , 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/elysiaElysia integration for Bun-powered applications
  • @fedify/nestjsNestJS integration for enterprise Node.js apps
  • @fedify/sqlite — SQLite driver compatible with Bun, Deno, and Node.js
  • @fedify/testing — Testing utilities with mock Federation and Context classes

@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 Federatable interface: setCollectionDispatcher() and setOrderedCollectionDispatcher()
  • Added getCollectionUri() method to the Context interface
  • 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 MemoryKvStore and DenoKvStore
  • Useful for implementing distributed locks and counters

Fediverse Handle Utilities

New utility functions make working with handles more convenient.

Contributors: ChanHaeng Lee [#278]

  • parseFediverseHandle() — Parse handles into components
  • isFediverseHandle() — Validate handle format
  • toAcctUrl() — Convert handles to URLs
  • FediverseHandle interface for type safety

Enhanced HTTP Request APIs

Contributors: Lee ByeongJun [#248, #281], Hyunchae Kim [#51, #315]

  • Added LookupWebFingerOptions.maxRedirection option for controlling redirect behavior
  • APIs now support AbortSignal for request cancellation
  • New DocumentLoaderOptions interface
  • Added signal options to LookupObjectOptions, LookupWebFingerOptions, and DoubleKnockOptions

@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-agent option for custom User-Agent headers
  • --allow-private-address for local testing
  • --max-redirection to 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/--output option to save results to files

Improved fedify inbox Command

Contributors: Hasang Cho [#262, #285], Jang Hanarae [#191, #342]

  • --actor-name and --actor-summary options 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

Test Infrastructure Contributors

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!

7
0
0

We'd like to recognize some excellent contributions from our (Open Source Contribution Academy) participants who have been working on .

@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 and to integrate Fedify's 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.

4
0
0
2
0
0

바이브코딩의 순기능(?) 이라고 할까요? 이런게 있으면 편하지 않을까? 라고 생각했을 때 적당한 도구를 빠르게 쳐낼 수 있는게 매력인 것 같아요. 말 못알아듣고 무한루프 돌때는 좀 그렇지만...

제가 관전하고 있는 OS 스터디에서 서울대 커리큘럼을 주로 활용하는데, 거기에 맞춰서 카이스트 자료도 정리해놓고 이것저것 붙였습니다. 만들고 나니 기분이 좋네요!!

OSTEP Tracker의 강의 항목을 선택했을 때 나오는 화면. 왼쪽은 SNU, 오른쪽은 KAIST 자료로 이루어져 있습니다.OSTEP Tracker의 대시보드(진도 현황 표시)
1
1
0
5
0

July has been a truly incredible month for LLM releases from China - Moonshot (Kimi K2), Z ai (GLM-4.5) and 5 new releases from Qwen

I think it's undeniable that the best available open weight models now come from the Chinese AI labs simonwillison.net/2025/Jul/30/

0
2
3
4