What is Hackers' Pub?

Hackers' Pub is a place for software engineers to share their knowledge and experience with each other. It's also an ActivityPub-enabled social network, so you can follow your favorite hackers in the fediverse and get their latest posts in your feed.

Hey folks! We're excited to share a preview of a new API coming in 1.6 that should make structuring larger federated apps much cleaner: FederationBuilder.

As your Fedify applications grow, you might encounter circular dependency issues when registering dispatchers and listeners across multiple files. The new FederationBuilder pattern helps solve this by separating the configuration phase from instantiation.

Instead of this:

// federation.ts
import { createFederation } from "@fedify/fedify";

export const federation = createFederation<AppContext>({
  kv: new DbKvStore(), 
  queue: new RedisMessageQueue(),
  // Other options...
});

// Now we need to import this federation instance in other files
// to register dispatchers and listeners...

You can now do this:

// builder.ts
import { createFederationBuilder } from "@fedify/fedify";

export const builder = createFederationBuilder<AppContext>();

// other files can import and configure this builder...
// actors.ts
import { builder } from "./builder.ts";
import { Person } from "@fedify/fedify";

builder.setActorDispatcher("/users/{handle}", async (ctx, handle) => {
  // Actor implementation
});
// inbox.ts
import { builder } from "./builder.ts";
import { Follow } from "@fedify/fedify";

builder.setInboxListeners("/users/{handle}/inbox", "/inbox")
  .on(Follow, async (ctx, follow) => {
    // Follow handling
  });
// main.ts — Only create the Federation instance at startup
import { builder } from "./builder.ts";

// Build the Federation object with actual dependencies
export const federation = await builder.build({
  kv: new DbKvStore(),
  queue: new RedisMessageQueue(),
  // Other options...
});

This pattern helps avoid circular dependencies and makes your code more modular. Each part of your app can configure the builder without needing the actual Federation instance.

The full documentation will be available when 1.6 is released, but we wanted to share this early with our community. Looking forward to your feedback when it lands!

Want to try it right now? You can install the development version from JSR or npm:

# Deno
deno add jsr:@fedify/fedify@1.6.0-dev.777+1206cb01

# Node.js
npm add @fedify/fedify@1.6.0-dev.777

# Bun
bun add @fedify/fedify@1.6.0-dev.777

0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0

모든 차별은 없애야하지만 '법'으로 가는 건 안된다는 게 무슨말이지.. 차별 금지를 법제화 안하면 차별이 어떻게 없어지지? "나 차별 하고 싶어"를 "나 좋은 사람이야" 랑 같이 말하고 싶어서 변명을 하다보면 이렇게 말도 안되는 소리가 나온다.

RE: https://bsky.app/profile/did:plc:2sjfdilgcpeyjnqo7u6apdfn/post/3lnfddz54x22r

0
0
0
0

📢 Calling all *BSD enthusiasts to present at THE European *BSD conference of the year! 😈⛳️🐡

We have already received a good number of great talks, but we want more!

Got a groundbreaking discovery in BSD applications, architecture, or implementation? Or maybe you've cracked the code on performance and security? We want to hear from you!

Don't miss this chance to share your insights on:
- Applications: Show us how BSD-based systems are solving real-world problems!
- Architecture: Dive deep into the inner workings of BSD.
- Implementation: Share your tips and tricks for making BSD systems purr like a kitten.
- Performance: Help us squeeze every last drop of speed out of BSD.
- Security: Show off your fortress-building skills in the world of BSD.
- Economic or organizational aspects: How BSD is making a difference in the real world.

events.eurobsdcon.org/2025/cfp

Deadline: June 15, 2025 🕒

Let's make EuroBSDCon 2025 the best one yet! See you in Zagreb! 🌟

EuroBSDCon 2025 in Zagreb, Croatia 🇭🇷
September 25-28, 2025

Picture of Ironman looking apologetic...
It has the text:
Oops
Now we want more
0
1
1
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

🚨📝 New blog post alert 📝🚨

Wondering what happens after you submit your PyCon UK 2025 proposal? 👀

Our latest blog post shares how we review proposals, shortlist talks, and build a diverse and exciting schedule 🎤🧠✨

With so many brilliant ideas to choose from, it’s a tough job! You can read all about our process, from initial review to building the final programme, here: 2025.pyconuk.org/2025/04/propo

🗓️ Reminder: CfP closes on 11th May ⌛

0
1
0
0
0
0

부모님이 테무에서 사신 마우스로 테스트할겸 지뢰찾기 고급 깨봤음
사실 산 것도 아니고 다른 상품들 사면 공짜로 껴주는 거였는데(광고 ㅈㄴ 하는 테무 무료 선물 그거) 의외로 클릭 느낌도 괜찮고 좋음

0

可愛いだけじゃ、だめですかぁ?って可愛いだけじゃなくて、知性や行動力や発言力やあったら、途端に恐ろしい執念で叩きまくるくせになぁあいつら。キモキモのキモなんだよなあ。

0
0

"permissive licenses like MIT are bad because corporations can just take all or part of your software and pretend like they wrote it"

uhhh no they can't, not without violating the terms of the license agreement, actually. and if they're up for license agreement violation, picking a different license *will not help*

0

Soweit ist es im ÖRR schon, das der Direktor der Stiftung KZ den Aggressor nicht mehr erwähnen darf, da das Interview sonst nicht gesendet wird. Danke und
Cc @dabDaniel Anibal Bröckerhoff @janboehmJan Böhmermann 🤨 :verified:

Update: Es war das @ZDFZDF :zdf: - t-online.de/nachrichten/deutsc

Post von Jens-Christian Wagner: Diese Woche wurde ich erstmals in einem Interview mit einem Sender des ÖRR bei einer Äußerung zum Geschichtsrevisionismus gebeten, die #AfD nicht explizit  zu erwähnen. Begründung: Das wird sonst nicht gesendet.Zweiter Post: Es gab noch eine zweite Begründung: Die Redakteurin fürchtete rechtsextreme Kommentare und Beschimpfungen in Social Media. Ich kann sie ansatzweise sogar verstehen. Der Hass im Netz ist fürchterlich. Aber wir sollten uns davon trotzdem nicht einschüchtern lassen.
0
0
0
0
0
0
0
0

可能是我現在很需要這方面的引路
所以不論是書籍或是IG圖文
都看到了關於「期待」的討論

究竟是要抱有期待呢
還是不期不待,不受傷害?

過程中有從不同的角度去探討
就我自己的綜合結論是

可以抱有合理的期待,並且做到課題分離

還是可以期待那些美好的事物出現在生活中
但是要分清楚哪些是自己可控的
針對不可控的就不要糾結內耗
可控的部分就盡自己所及的改善就好

畢竟如果什麼都不期待
生活也是會變得蠻乏味的

0
0
0
0