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.

0

I saw a TIL post on bsky today about using '/' with pathlib.Path's. Some other neat things recently added to
- itertools.batched (3.12)
- accessing re.Match groups using [] notation (faster than calling group()) (3.6)
- 1_000_000 is a legal syntax for 1000000 (3.6)
- command-line access to stdlib modules (python -m <name>)
- uuid (3.12)
- json (3.14)
- random (3.13)
- sqlite3 (3.12)
- http.server (3.4)
- f-strings (3.6)
- true multithreading (3.14)
- contextlib.chdir (3.11)

0
0
0

i feel like this is my Main Thing these days but it really is crazy how much learning to selfhost shit has changed my outlook on computers. yes the broad computer industry is still in shit garbage hell but also it's honestly not hard to set up your own shit if you want to

0
0

that is, claude did figure it out after poking into tap's internal db and me intentionally doing edits via pdsls. but ideally the output would be good enough that claude can see the issue right away

0
0
0
0
0
0
0
0

another problem is just the tap output (when it starts) gives no indication that it's severely behind and is doing something this just looks .. normal. it's hard to say that it's doing anything at all. it just looks idle even claude couldn't figure out what's going on

> dev:tap
> TAP_SIGNAL_COLLECTION=at.inlay.pack TAP_COLLECTION_FILTERS=at.inlay.* TAP_DISABLE_ACKS=true TAP_LOG_LEVEL=debug tap run

{"time":"2026-03-07T23:54:03.216959Z","level":"INFO","msg":"creating tap service"}
{"time":"2026-03-07T23:54:03.218584Z","level":"INFO","msg":"startup complete"}
{"time":"2026-03-07T23:54:03.218595Z","level":"INFO","msg":"starting firehose consumer"}
{"time":"2026-03-07T23:54:03.218605Z","level":"INFO","msg":"starting HTTP server","addr":":2480"}
{"time":"2026-03-07T23:54:03.229748Z","level":"INFO","msg":"connecting to firehose","system":"tap","component":"firehose","url":"wss://relay1.us-east.bsky.network/xrpc/com.atproto.sync.subscribeRepos?cursor=27917087710","cursor":27917087710,"retries":0}
{"time":"2026-03-07T23:54:03.537807Z","level":"INFO","msg":"connected to firehose","system":"tap","component":"firehose"}
{"time":"2026-03-07T23:54:03.545088Z","level":"INFO","msg":"enumerated repos by collection batch","system":"tap","component":"crawler","collection":"at.inlay.pack","count":5}
{"time":"2026-03-07T23:54:03.545167Z","level":"INFO","msg":"collection enumeration complete","system":"tap","component":"crawler","collection":"at.inlay.pack"}
{"time":"2026-03-07T23:54:03.545178Z","level":"INFO","msg":"finished enumerating network, sleeping for 1 day","system":"tap","component":"crawler"}
{"time":"2026-03-07T23:54:04.63829Z","level":"INFO","msg":"websocket connected","system":"tap","component":"server"}
0
0
0
0
0
0
0
0
1
0
3

maybe you're saying that out of these three, only Dynamically Configured works reasonably for local dev? this is not obvious "Collection Signal" seems most automatic so that's why i went with it. i assumed it would be essentially free since no users except me have the signal collection

Network Boundary Modes
Tap syncs a subset of repos in the network. It can operate in three modes for determining this network boundary.

Dynamically Configured (default): Tap starts out tracking no repos. Specific repos can then by added via /repos/add and removed via /repos/remove.

Collection Signal: Set TAP_SIGNAL_COLLECTION=com.example.nsid. Track all repos that have at least one record in the specified collection. Many applications create a "declaration" or "profile" in a repo when that repo uses that application

Full Network: Set TAP_FULL_NETWORK=true. Enumerates and tracks all findable repos on the entire network. Resource-intensive and takes days/weeks to complete backfill.
0
0
1
0
1
0
1
0

i'm not actually backfilling millions of users or anything like this i think it's just being stupid and doesn't understand that it can skip ahead, and is earnestly trying to resume from yesterday's global cursor this makes no sense for local workflow. what it should do is either skip or resync

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

Any personal recommendations (not search results please) from UK folks for a small UPS to cover our ONT, router, switches and a WIFI access point?

Ideally something fairly compact, I don't want it to be rackmount.

If it could do a few hours at something like 60-70W, that'd be fine.

0
1

I really love the mastodon.social server, but I do not understand why polls are limited to four options.

If I wanted to ask which German state do you love the most (16 options), or which member of Trump's cabinet will be fired next (26 options), why would the server then want to prevent this poll by limiting the choices to four options?

I really dislike this limitation.

0