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
0
0
0
1
0
0

One of the most fun parts for me building DJ Mood was using Metal shaders thanks to Inferno by @twostrawsPaul Hudson .

I am also making this post my public accountability statement to send Paul a PR to contribute my custom shader for others to reuse!

github.com/twostraws/Inferno

0
0
0
0
0

:left_side_balloon_without_tail:寝よ!みんも寝かしつけてあげましょうね​:meowhuggies:​​:ohuton_kakete_agemasyoune::right_side_balloon_with_tail::blank:
むっ…フォントがおかしい!
貴様だれだ!正体を現せ!
:left_side_balloon_without_tail:寝かしつけてあげましょしょしょしょ​:ohuton_kakeke_ageageaaaaa:​​:blobyosanoakiko_neon::right_side_balloon_with_tail::blank:
ヒエッ…私の真似をした悪魔だった…
いところだった…
それでは
:oyasumiama_heart:​​:mizumochi_byebye:​​:mata_asita_ne__i:

1
0
0
0
1
0

This brings back memories. Before Python had async/await, before asyncio became standard, I was happily writing concurrent code with gevent. I actually preferred it.

The reason was simple: no function color problem. With async/await, you split the world into two kinds of functions—ones that block by default and ones that don't. You have to mark the latter with async and remember to await them. With gevent, everything just blocks by default, and you spawn when you need concurrency. It's the same mental model as multithreading, just lighter. Project Loom in Java does something similar, though the technical details differ.

I sometimes wonder what Python would look like if it had embraced gevent-style coroutines in CPython instead of adding async/await. Or if Stackless Python had been accepted upstream. Maybe async programming would be more approachable today.

The explicit await keyword gives you visibility into where context switches can happen, sure. But in practice, I/O points are obvious even without the keyword—you're reading from a socket, querying a database, making an HTTP request. The explicitness doesn't really prevent race conditions or timing bugs. Meanwhile, function colors infect everything. One async library forces your entire call stack to be async. You end up maintaining both sync and async versions of the same code, or the ecosystem just splits in two.

With gevent, there's no such problem. You just call functions. Spawn them if you want concurrency, call them normally if you don't. Go's goroutines and Project Loom are popular for good reasons—they make concurrency accessible without the cognitive overhead.

Python's choice is history now, and there's no going back. But looking at how things turned out, I can't help but think the more practical path was right there, and we walked past it.

4

This brings back memories. Before Python had async/await, before asyncio became standard, I was happily writing concurrent code with gevent. I actually preferred it.

The reason was simple: no function color problem. With async/await, you split the world into two kinds of functions—ones that block by default and ones that don't. You have to mark the latter with async and remember to await them. With gevent, everything just blocks by default, and you spawn when you need concurrency. It's the same mental model as multithreading, just lighter. Project Loom in Java does something similar, though the technical details differ.

I sometimes wonder what Python would look like if it had embraced gevent-style coroutines in CPython instead of adding async/await. Or if Stackless Python had been accepted upstream. Maybe async programming would be more approachable today.

The explicit await keyword gives you visibility into where context switches can happen, sure. But in practice, I/O points are obvious even without the keyword—you're reading from a socket, querying a database, making an HTTP request. The explicitness doesn't really prevent race conditions or timing bugs. Meanwhile, function colors infect everything. One async library forces your entire call stack to be async. You end up maintaining both sync and async versions of the same code, or the ecosystem just splits in two.

With gevent, there's no such problem. You just call functions. Spawn them if you want concurrency, call them normally if you don't. Go's goroutines and Project Loom are popular for good reasons—they make concurrency accessible without the cognitive overhead.

Python's choice is history now, and there's no going back. But looking at how things turned out, I can't help but think the more practical path was right there, and we walked past it.

4
1
0
0
0
0
0
0
0
0
0
0
0
1
0

New, from me: Who Operates the Badbox 2.0 Botnet?

The cybercriminals in control of Kimwolf -- a disruptive botnet that has infected more than 2 million devices -- recently shared a screenshot indicating they'd compromised the control panel for Badbox 2.0, a vast China-based botnet powered by malicious software that comes pre-installed on many Android TV streaming boxes. Both the FBI and Google say they are hunting for the people behind Badbox 2.0, and thanks to bragging by the Kimwolf botmasters we may now have a much clearer idea about that.

krebsonsecurity.com/2026/01/wh

A web-based control panel, allegedly for the Badbox 2.0 botnet, at the ip address 45.134.212.95. This users panel lists seven authorized users, all but one of which have email addresses ending in the chinese email service qq.com. Two of the users on this list map directly to domains tied to the Badbox 2.0 botnet.
0
0
0
1

The @w3cWorld Wide Web Consortium Security proposes to make systematic use of threat modeling in W3C to identify potential , vulnerabilities, and safeguards in web specifications.
This guide is designed to help standards make informed decisions about and risks from the beginning of standard development

▶️ w3.org/TR/threat-modeling-guid

Feedback wlc: github.com/w3c/threat-modeling

Data Flow Diagram for Minimalist Web Threat Model with 3 entities (user, network operator, website admin), linked by 7 flows to 3 processes (DNS, browser, server), as described in section A1.3 of the guide.
0
0
0
0
0
0

the whole ai-bro shtick about "ai democritizes art/programming/writing/etc" seemed always so bs to me, but i couldn't put it into words, but i think i now know how.

ai didn't democritize any of these things. People did. The internet did. if all these things weren't democritized and freely available on the internet before, there wouldn't have been any training data available in the first place.

the one single amazing thing that today's day and age brought us is, that you can learn anything at any time for free at your own pace.

like, you can just sit down, and learn sketching, drawing, programming, writing, basics in electronics, pcb design, singing, instruments, whatever your heart desires and apply and practice these skills. fuck, most devs on fedi are self taught.

the most human thing there is is learning and creativity. the least human thing there is is trying to automate that away.

(not to mention said tech failing at it miserably)

0
0
0

uspol

This (from May 2024, 6 months before the US election) from a leftist with a substack (lol) did not age well

archive.is/poCZW

His points were basically:

- Trump 1 was worse but not MUCH worse than any other Republican president (I agree) so Trump 2 will be the same (lol, lmao)
- we should stop wasting time debating whether Trump is fascist (then spends paragraphs explaining this is because he is correct that Trump is not fascist)

It is sometimes embarrassing to be on the left

0

RE: mastodon.nl/@CEDO/115961006784

Totally agreed: this petition in NL urges the pension fund ABP to withdraw its investments from Palantir. Our money should not be invested in surveillance tech, target creation for ICE and for the IDK genocide in Gaza.

In Dutch: actie.degoedezaak.org/petition

0

キャノン「さっきまでこれとこれとこれ、見てたよね?見てたよね?見てたよね?どうだった?どうだった?どうだった?いるよね?いるよね?買え買え買え買え買え買え買え買え買え買え買え買え」

1
0
0
1
0
0

Microsoft is announcing its own Maia 200 AI chip today. It goes head-to-head in performance against Google and Amazon's AI chips, and Microsoft is using Maia 200 to host GPT-5.2 and others for Microsoft Foundry and Microsoft 365 Copilot. Details here 👇 www.theverge.com/news/867670/...

Microsoft’s latest AI chip goe...

0
0
7
0
0
0
0
0
0

But there is reason for hope, optimism. Look at the cities that have been raided by ICE: Where the communities are engaging in mass resistance – normal people who must know they risk getting attacked and detained, who are willing to sacrifice their freedom and their bodies.

0
1

i let my code written by an infinite amount of monkeys on typewriters. Sure they get it wrong sometimes, but humans make mistakes too, right?

invest in my infinite amount of monkeys on typewriters pls. we gonna replace everyone with an infinite amount of monkeys on typewriters. please make your company 100% dependent on my typewriter monkeys, what's the worst that could happen 🙂

0
1