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.

きょうもいっとこ :saba:

ca4139be07 (upstream/main) chore(deps): update node.js to 22.15 (#34523)
ffc853c086 fix(deps): update dependency pg to v8.15.1 (#34516)
577e407ffc New Crowdin Translations (automated) (#34522)
b68c622a07 fix(deps): update dependency pg-connection-string to v2.8.1 (#34517)
7bc301e184 Make `Web::PushSubscription#user` and `Web::PushSubscription#access_token` relationships non-optional (#34498)
dee744c793 Fix quote serializer (#34510)

0
0
0
0
0
0
0
0
0
0

At any rate what I was thinking about here is that you will have times when your own motivation and your own faith fails you, and then what? Who is around you helping to shape your thoughts? I think people underestimate the ways that the people they surround themselves with can change THEM rather than the other way around.

0
0
0

Following the FEP-fe34 update, I am publishing a new version of FEP-ae97: Client-side activity signing

https://codeberg.org/fediverse/fep/pulls/564

The registration process is completely different now. Keys for signing S2S requests are generated on the server and only public parts are shared with the client.

When FEP-ae97 client retrieves activities from the inbox, it signs GET requests with a key associated with actor's DID authority.

For example, this actor:

ap://did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK/actor"

Will generate an HTTP signature with this keyId parameter:

keyId="did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK#z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"

Implementations have been updated too (Nomadic AP Client and Mitra).

#fep_ae97

0
0

Ukraine has no great options if US recognizes Crimea as Russian

Ukraine is facing a crossroads in its fight against Russia's full-scale invasion, with the possibility of being forced to reject an unfavorable peace deal being imposed under huge pressure from the U.S.

Ukraine finds itself in an immensely frustrating position, having done all that was asked of it by the U.S. since the peace process began in earnest, yet now facing demands that are likely impossible.

Photo: Jabin Botsford/The Washington Post via Getty Images

🔗 kyivindependent.com/ukraine-ha

0
0

I've currently been doing a tonne of work on Doorkeeper, a Mastodon dependency for OAuth, and currently that work is mostly uncompensated.

I'm also doing a reasonable amount of work on the standards side (W3C & IETF), which is also uncompensated.

I'm not making ends meet at the moment, so if you can spare €5-10 a month, please do consider supporting my work on Mastodon, Doorkeeper, standards, and the wider Fediverse.

I'm currently running a deficit of about €1000-1600 per month, which is completely unsustainable.

(there's also one-time, but ongoing support is what enables me to do this important work)

support.thisismissem.social

0
0
0
0
0
0
0
0
0
0

Ihr braucht öfter mal APN-Pläne und nutzt Apple-Geräte? :blobcat_db:

Ich hätte da einen kleinen Shortcut erstellt.

:blobcatcode: Name

oder gleich

:blobcatcode: Ril 100-Abkürzung

eintragen – zack, hier kommt der APN-Plan. :blobcatbook:

Download: icloud.com/shortcuts/4b169b65e

Feedback gern gesehen! :uk_see_it: :uk_say_it: :uk_sorted: (Ist mein erstes öffentliches Projekt 👉👈)

PS: kann man sich auf dem Mac wunderbar auf z. B. command+P (für „Plan“) legen :)

0
0
0
0
0
0
0
0
0

Today Melissa Lewis over on BlueSky pointed out that the font used in the infamous "You wouldn't steal a car" anti-piracy campaign was actually designed by Just van Rossum, whose brother, Guido, created the Python programming language (bsky.app/profile/melissa.news/post/3ln7hx5rhcj2v)

She also pointed out that the font had been cloned and released illegally for free under the name "XBAND Rough". Naturally, it would be hilarious if the anti-piracy campaign actually turned out to have used this pirated font, so I went sleuthing and quickly found a PDF from the campaign site with the font embedded (
web.archive.org/web/20051223202935/http://www.piracyisacrime.com:80/press/pdfs/150605_8PP_brochure.pdf).

So I chucked it into FontForge and yep, turns out the campaign used a pirated font the entire time!

A screenshot of FontForge opening a PDF brochure from the "Piracy is a Crime" campaign, showing that it is using the font XBAND Rough, an unlicensed clone of the font FF Confidential.
0
0
0

Have frameworks like React and Vue hindered adoption of modern web features like `<dialog>` and `popover`?

They don't map well to components because they expect to always exist in the DOM and have an imperative interface (show/close) for modifying their state.

They top layer is also incompatible with the "portal"/"teleport" model.

If you want something that shows up on top of a modal you actually need a `reverse teleport` where the dialog steals some dom nodes from outside itself.

0
0
0
0
0
0
0

Retrieval-based learning is an active thing you gotta keep doing in life. I mean that silly advice you see, "keep doing crossword puzzles for brain health"? That is not actually bullshit. It is very clear that even if you are strongly in the corner of AI tools the most augmenting use cases we see are the ones where people have workflows that continue to center their own generation and active learning. These guys just don't have a working theory of the human mind at all

scholar.social/@gedankenstueck

0
0
0

Today's example of "you can just do things":

A colleague complained about Python's error message "TypeError: unhashable type" being hard to understand when trying to use eg a list as a dict key or set element. I also always have trouble explaining this problem to beginner students, so I filed an issue. Then @vstinnerVictor Stinner 🐍 wrote a patch and opened a PR two hours later, which I reviewed and merged. Now:

screenshot of Python console with the code:

d = {}
key = [1, 2, 2]
d[key] = 123

producing the error message:

TypeError: cannot use 'list' as a dict key (unhashable type: 'list')
0
0
0
0
0
0
0