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.

๐Ÿ• 2026-03-08 00:00 UTC

๐Ÿ“ฐ OSSใซใŠใ‘ใ‚‹AI Slopๅ•้กŒใฎไฝ•ใŒๅ•้กŒใชใฎใ‹๏ผŸ (๐Ÿ‘ 165)

๐Ÿ‡ฌ๐Ÿ‡ง How AI-generated spam ("AI Slop") impacts large OSS projects. Hono maintainer shares challenges of managing low-quality AI contributions.
๐Ÿ‡ฐ๐Ÿ‡ท ๋Œ€๊ทœ๋ชจ OSS ํ”„๋กœ์ ํŠธ์—์„œ AI ์ƒ์„ฑ ์ŠคํŒธ("AI Slop")์ด ๋ฏธ์น˜๋Š” ์˜ํ–ฅ. Hono ๋ฉ”์ธํ…Œ์ด๋„ˆ๊ฐ€ ์ €ํ’ˆ์งˆ AI ๊ธฐ์—ฌ ๊ด€๋ฆฌ ๊ฒฝํ—˜ ๊ณต์œ .

๐Ÿ”— zenn.dev/yusukebe/articles/3fd

0

์•„์นจ์˜ ์ฒซ ๋น›์ฒ˜๋Ÿผ
๋‹น์‹ ์˜ ๊ฐ์„ฑ๋„ ๊นจ์–ด๋‚ฉ๋‹ˆ๋‹ค

ํ‰๋ฒ”ํ•œ ์ผ์ƒ ์†์—์„œ๋„
ํŠน๋ณ„ํ•จ์„ ๋А๋ผ๋Š” ๋งˆ์Œ์ด ์†Œ์ค‘ํ•ด์š”

0
0

โ€œ์กฐ์„  ๋‚จ์„ฑ๋“ค ๋ณด์‹œ์˜ค. ์กฐ์„ ์˜ ๋‚จ์„ฑ์ด๋ž€ ์ธ๊ฐ„์€ ์ฐธ์œผ๋กœ ์ด์ƒํ•˜์˜ค. ์ž˜๋‚˜๊ฑด ๋ชป๋‚˜๊ฑด ๊ฐ„์— ๊ทธ๋„ค๋“ค์€ ์ ์‹ค, ํ›„์‹ค์— ๋ช‡ ์ง‘ ์‚ด๋ฆผ์„ ํ•˜๋ฉด์„œ๋„ ์—ฌ์„ฑ์—๊ฒŒ๋Š” ์ •์กฐ๋ฅผ ์š”๊ตฌํ•˜๊ณ  ์žˆ๊ตฌ๋ ค. ํ•˜์ง€๋งŒ ์—ฌ์ž๋„ ์‚ฌ๋žŒ์ด์™ธ๋‹ค! ํ•œ์ˆœ๊ฐ„ ๋ถ„์ถœํ•˜๋Š” ๊ฐ์ •์— ํฉ๋œจ๋ ค์ง€๊ธฐ๋„ ํ•˜๊ณ  ์‹ค์ˆ˜๋„ ํ•˜๋Š” ๊ทธ๋Ÿฐ ์‚ฌ๋žŒ๋“ค์ด์™ธ๋‹ค. ๋‚จํŽธ์˜ ์•„๋‚ด๊ฐ€ ๋˜๊ธฐ ์ „์—, ๋‚ด ์ž์‹์˜ ์–ด๋ฏธ์ด๊ธฐ ์ „์— ์ฒซ์งธ๋กœ ๋‚˜๋Š” ์‚ฌ๋žŒ์ธ ๊ฒƒ์ด์˜ค. ๋‚ด๊ฐ€ ๋งŒ์ผ ๋‹น์‹ ๋„ค ๊ฐ™์€ ๋‚จ์„ฑ์ด์—ˆ๋‹ค๋ฉด ์˜คํžˆ๋ ค ํ˜ธํƒ•ํ•œ ์„ฑํ’ˆ์œผ๋กœ ์—ฌ๊ฒจ์กŒ์„ ๊ฑฐ์™ธ๋‹ค.โ€ - ๋‚˜ํ˜œ์„ <์ดํ˜ผ๊ณ ๋ฐฑ์„œ (้›ขๅฉšๅ‘Š็™ฝๆ›ธ)>

0

๊ฐ•ํ›ˆ๋‹˜ ๋ง์”€๋”ฐ๋‚˜ ๋ฐ•๋ฌผ๊ด€์ด ์•„๋‹ˆ๊ณ  '์žฅ๋ฌผ'๊ด€์ด๋”๋ผ๊ณ ์š”......๊ฐ€๋ณด์ง„ ๋ชปํ–ˆ์–ด๋„..(๋Œ๋ ค์ค„๊ฑด ๋Œ๋ ค์ฃผ๊ณ  ๋ณต์ œํ’ˆ์ด๋ผ๋„ ๋งŒ๋“ค๊ณ  ๋Œ๋ ค์ค˜๋ผ!!)

0
1
0

๋Œ€์˜์žฅ๋ฌผ๊ด€ ์žฅ๋ฌผ ์ถœ์‹ ๊ตญ์ด ์ด๋ผํฌ 16๋งŒ > ์ดํƒˆ๋ฆฌ์•„ 15๋งŒ > ์ด์ง‘ํŠธ 12๋งŒ์ด์—ˆ๋‚˜. ์ดํƒˆ๋ฆฌ์•„ ์˜์™ธ๋„ค.

twitter.com/taekie/status/2030 ์ด ๋ถ„ ํฌ์ŠคํŠธ(ํŠธ์œ—)์™€ ๊ด€๋ จํ•ด์„œ

0

I saw a TIL post on bsky today about using '/' with pathlib.Path's. Some other features recently added to
- itertools.batched (3.12)
- accessing re.Match groups using m[1] notation (faster than calling m.group(1)) (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
3
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

Pizza Hutใฎ5ๆ™‚ใพใง5ใƒ‰ใƒซใƒ”ใ‚ถไปŠๅ›žใฏๅ…ทใ‚’่ฟฝๅŠ ใ—ใฆใ‚‚ๅ€คๆฎตใŒไธŠใŒใ‚‰ใชใ„ๆ„Ÿใ˜ใงใฉใ†ใ—ใฆใ“ใ‚“ใชๅฎ‰ใ„ใ‚“

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