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

I have a fundamental #GameDev question that has been bugging me for ages.

I've tried developing my own games, but I always felt like I was missing something fundamental about #programming logic and everything I did felt "wrong" and inefficient.

Here goes.

At the most basic level, games run as endless loops, right? Every frame, something happens. The program goes through the same loop over and over again until something causes it to exit.

For example, in a simple Asteroids-like shoot-em-up, the game goes through the list of obstacles every frame and sets their position downward a bit. They therefore appear to be coming towards you over time.

But games are obviously complex and interactive, and therefore don't just do the same thing every frame. The game needs different things to happen each iteration of the loop, based on what's going on in the game.

For example, the Asteroids obstacle needs to be removed from the game once it exits the screen, or once it overlaps with the player.

The only way I know to check whether something happened is to add a conditional to the game loop. Every single frame, the game checks for every single obstacle whether its position is outside the boundaries, and if so, removes it.

A computer can't just "keep in mind" to watch for a certain event to make something happen, it needs to explicitly be reminded to check every frame.

Even if something is supposed to happen only every minute, you still need to count a number up every frame until you reach a minute's equivalent amount of frames, and then the counter gets reset to zero and the event happens.

I understand all this works.

But what I don't understand is the following:
This seems extremely wasteful and inefficient, right?

I understand that a computer can calculate and compare a bazillion things a second, and that this is perfectly fine for something as simple as Asteroids.

But what about more complex games?

  • Do Mario jump-and-run games genuinely check whether Mario touches the goal post every single frame of the game?
  • Does GTA V check every single frame whether the player is in a mission, and if so, which one they're in?
  • Do games like #Minecraft check every single frame, for every single animal, whether they're currently on fire?
  • Do games check every single frame whether they're paused, in a menu, or running?

If this is genuinely what's going on, how the hell do complex games even run? When I play Minecraft, does the computer really, 120 times a second, for every single animal in the world, check whether they're currently poisoned? And then also checks whether the game is paused, whether there is mouse input, whether it's raining, whether music is playing, whether a block state has changed, and so on and so on?!

What about something like #BindingOfIsaac? Does it really check every single frame for every one of the thousands of possible items and whether the player has them equipped?

I mean, I'm sure it's abstracted a bit in that the game adds an "event hook" or something whenever you pick up a new item, but underneath all that, surely the game still has to check every frame for every possible hook whether it is active or not?

If I finally understood the answer to this question, I'd understand way more about game development.

0
0
1
0

@ricciRob Ricci @thisismissemEmelia 👸🏻 local-only posts is something that people have beel asking for for ages and Gargron has always fought against it. That led to the creation of the beautiful Hometown, along with a beautiful guide on how to make your own community: https://runyourown.social/ . Gargron has always said that this is not the kind of community they wanted, they want a distributed twitter. So, blacksky is only doing what others that are not mastodon have been doing for some time now

@rakoo @ricciRob Ricci now that Gargron is out of the way, I really hope @mellifluousboxFelix Hlatky and @renchapRenaud Chaput bring local-only posts to mainline Mastodon. It'd be such a huge help to moderators & server admins, it's not funny, and that's before you even get to the needs of server-local communities that you *don't* want federating.

Also, custom collections support to support addressing for Groups would be fantastic. I know Jesse from Frequency already has an implementation of that on top of a mastodon codebase

0

The Guardian: ‘Don’t go to the US – not with Trump in charge’: the UK tourist with a valid visa detained by ICE for six weeks

Karen Newton was in America on the trip of a lifetime when she was shackled, transported and held for weeks on end. With tourism to the US under increasing strain, she says, ‘If it can happen to me, it can happen to anyone’

theguardian.com/us-news/2026/f

0
4
0
1
0

그리고 나는 이렇게 답했다. "아마 그러면 사무적인 어법으로 무제한 칭찬할거라고." 채팅창에 한동인 "ㅋㅋㅋ"만이 주고갔으며, 그런 한참의 소리없는 웃음 끝에 친구와 나는 다음과 같이 잠재적 결론을 내렸다. 서두에 쓴 말과 같다. 결국은 패턴과 확률의 문제다. 그리고 나름 그것에 대해 대응하는 방법도 생각해봤는데, 그 방법은 대략 이랬다. "칭찬을 시작할 때 쯤 내용을 정리해서 다시 새로운 채팅을 시작하자."

0

문제는 이렇게 패턴화되고 확률화 될 수록 제미나이는 사용자가 원하는 대답을 할 수밖에 없다. 그도 그럴 것이 LLM의 기본 원리인 확률 자체가 사용자 맞춤을 확률적으로 계산하여 그에 근접한 대답을 조합해 토해내는 구조이기 때문이다. 챗GPT, 클로드, 제미나이, 딥시크 그 세부적인 디테일과 기술이 어떻게 다르던 간에 기본 토대가 LLM이면 이건 피할수 없는 문제가 아닌가 싶다. 친구는 제미나이와 채팅이 길어질 수록 자기를 마치 유치원생 대하듯 칭찬하는 것 같다며, 사무적인 화법으로 말해달라 말해볼까? 라고 말했다.

0

즉, 대화 초기에서는 이 사용자가 어떤 타입의 화법을 쓰고, 어떤 정보를 원하며, 무엇이 필요한지 알 수 없으니 보편적이고 적당한 화법으로 비교적 객관적인 답변을 한다. 물론 이 답변들은 확률에 의존한 답변이기 때문에, 사용자가 원하는 것에 정확하게 대답하지 못할 수도 있고. 할루시를 제시할 수도 있다. 그러면 사용자는 제미나이에게 수정을 가한다. 이건 맞고 이건 아니야 그럼 제미나이는 그것을 토대로 다시 확률계산을 한다. 그리고 이런 수정 문답이 진행될 수록 사용자는 패턴화 되고, 이 패턴은 확률화 되어 다음 대답에 반영된다.

0

제미나이를 업무에 활용하는(주로 자료검색 및 정리) 친구랑 채팅 중 "제미나이 이상하다. 어떤 주제든 어떤 대화든 길어지면 무조건적으로 내가 맞다고 하고 칭찬하는 빈도가 늘어난다. 내가 입으로 똥을 싸는 소리를 해도 내가 맞다고 하고 **내 안목에 감탄했다**라고 한다. 이거 도대체 왜 그런걸까?" 친구와 나는 이 부분에 대해서 고민을 해봤고, 결국은 패턴과 확률의 문제라고 잠재적으로 결론을 내렸다.

0

“An AI Called Winter” <dustycloud.org/blog/an-ai-call> by @cwebberChristine Lemmer-Webber is an extremely balanced post. The distinction between AI as a field and tech in it, including modern approaches; and AI industry, with all the deaths in its wake; is particularly important and novel to me. We need such sane views, and we need them direly.

And the subject is fun and makes me want to learn Datalog again. Any suggestions for resources / software?

0
0
0
0
0
0
2
0
0

Really solid breakdown of how known spyware does the thing we all worry about: hiding camera/mic indicators.

An important note I think is that this capability requires kernel-level access to hook Springboard (iOS's UI controller) and hide those indicators. In other words, something your Facebook app cannot do.

jamf.com/blog/predator-spyware

0
1
0

@FelisCatusDomesticus @cwebberChristine Lemmer-Webber oh, damn! they must just not have thought of that.

where should they go, man? you cant make a forum nowadays without consulting an international law student. the alternatives are user-unintuitive and janky when they work at all, and then they inevitably become nazis too. matrix loves the police and military. fedi makes a blocklist of lgbt people.

we live in an authoritarian world, and the internet exists in that context; and so of course, the internet tries to shove us all into authoritarian social structures. dont blame the kids, fix the system. stop punching down.

0
0
0
1
0
0
0

突然想到我剛上大學的時候,很多課堂的期末報告直接要求要寫論文,然後我們與此同時根本沒學過學術寫作。要是格式、標點符號等等的還能自己學,怎麼組織內文根本沒人教,高中裡面也沒有。
類似學術寫作的課在我們系上開在大三,而且上的方式只是讀別人的論文然後寫心得,我心想心得這種東西不是高中就會寫了嗎。
然後大學每一個作業交出去老師都不會給你回饋,只能等到學期末出成績,然後也沒人告訴你為什麼你成績長這樣。就覺得超沒成就感的,也搞不懂自己在幹嘛。
所以我大二開始就自己去找打工、實習之類的,覺得累積教學經驗比這些學術的東西對我來說更有意義。而且我也不是做研究的料。
現在想來,如果帶著我目前的教學經驗重學理論應該比較有幫助,但如果考了研究所,我覺得畢業論文我一樣不知道怎麼寫。不過碩士班的課程內容可能就會有相關的訓練了吧我不知道。

0

Cloudflare suffered a service outage on February 20, 2026. A subset of customers who use Cloudflare’s Bring Your Own IP (BYOIP) service saw their routes to the Internet withdrawn via Border Gateway Protocol (BGP). Here's the breakdown of what happened, including our logic for the fix and long-term architectural improvements. blog.cloudflare.com/cloudflare

0

Fedify 2.0.0 is here!

This is the biggest release in Fedify's history. Here are the highlights:

  • Modular architecture — The monolithic @fedify/fedify package has been broken up into focused, independent packages: @fedify/vocab, @fedify/vocab-runtime, @fedify/vocab-tools, @fedify/webfinger, and more. Smaller bundles, cleaner imports, and the ability to extend ActivityPub with custom vocabulary types.
  • Real-time debug dashboard — The new @fedify/debugger package gives you a live dashboard at /__debug__/ showing all your federation traffic: traces, activity details, signature verification, and correlated logs. Just wrap your Federation object and you're done.
  • ActivityPub relay support — First-class relay support via @fedify/relay and the fedify relay CLI command. Supports both Mastodon-style and LitePub-style relay protocols (FEP-ae0c).
  • Ordered message delivery — The new orderingKey option solves the “zombie post” problem where a Delete arrives before its Create. Activities sharing the same key are guaranteed to be delivered in FIFO order.
  • Permanent failure handlingsetOutboxPermanentFailureHandler() lets you react when a remote inbox returns 404 or 410, so you can clean up unreachable followers instead of retrying forever.

Other changes include content negotiation at the middleware level, @fedify/lint for shared linting rules, @fedify/create for quick project scaffolding, CLI config files, native Node.js/Bun CLI support, and many bug fixes.

This release includes significant contributions from Korea's OSSCA participants. Huge thanks to everyone involved!

This is a major release with breaking changes—please check the migration guide before upgrading.

Full release notes: https://github.com/fedify-dev/fedify/discussions/580

3
5
0
0
1
0

Having one of those days where I've done a few reasonably energetic things, such as unload/load the dishwasher, swapped the TV onto a new cabinet, and tidied up a little bit, and now I'm completely and utterly wiped. Zero spoons.

Going to try heading out into the timid afternoon sunshine we've got here. We're going to visit one of the two ruined abbeys that are within a twenty minute drive. Take some photos and see how the rest of the afternoon goes.

0
0
0
0
0
2

Reflection on vs

Ansible gives that ever-so tempting option to make changes directly on the servers. Things you might justify as minor, unimportant, or urgent. Whatever the reason, you can easily sync the server state with Ansible later, right?

Later: One some unrelated task, all these changes show up in the dry run and are a distraction and drag to deal with.

forces you to make the changes only to the "single source of truth", eliminating this class of issues.

0
0
0
0

Fedify 2.0.0 is here!

This is the biggest release in Fedify's history. Here are the highlights:

  • Modular architecture — The monolithic @fedify/fedify package has been broken up into focused, independent packages: @fedify/vocab, @fedify/vocab-runtime, @fedify/vocab-tools, @fedify/webfinger, and more. Smaller bundles, cleaner imports, and the ability to extend ActivityPub with custom vocabulary types.
  • Real-time debug dashboard — The new @fedify/debugger package gives you a live dashboard at /__debug__/ showing all your federation traffic: traces, activity details, signature verification, and correlated logs. Just wrap your Federation object and you're done.
  • ActivityPub relay support — First-class relay support via @fedify/relay and the fedify relay CLI command. Supports both Mastodon-style and LitePub-style relay protocols (FEP-ae0c).
  • Ordered message delivery — The new orderingKey option solves the “zombie post” problem where a Delete arrives before its Create. Activities sharing the same key are guaranteed to be delivered in FIFO order.
  • Permanent failure handlingsetOutboxPermanentFailureHandler() lets you react when a remote inbox returns 404 or 410, so you can clean up unreachable followers instead of retrying forever.

Other changes include content negotiation at the middleware level, @fedify/lint for shared linting rules, @fedify/create for quick project scaffolding, CLI config files, native Node.js/Bun CLI support, and many bug fixes.

This release includes significant contributions from Korea's OSSCA participants. Huge thanks to everyone involved!

This is a major release with breaking changes—please check the migration guide before upgrading.

Full release notes: https://github.com/fedify-dev/fedify/discussions/580

0

"Feed algorithms are widely suspected to influence political attitudes. However, previous evidence from switching off the algorithm on Meta platforms found no political effects1. Here we present results from a 2023 field experiment on Elon Musk’s platform X shedding light on this puzzle. We assigned active US-based users randomly to either an algorithmic or a chronological feed for 7 weeks, measuring political attitudes and online behaviour. Switching from a chronological to an algorithmic feed increased engagement and shifted political opinion towards more conservative positions, particularly regarding policy priorities, perceptions of criminal investigations into Donald Trump and views on the war in Ukraine. In contrast, switching from the algorithmic to the chronological feed had no comparable effects. Neither switching the algorithm on nor switching it off significantly affected affective polarization or self-reported partisanship. To investigate the mechanism, we analysed users’ feed content and behaviour. We found that the algorithm promotes conservative content and demotes posts by traditional media. Exposure to algorithmic content leads users to follow conservative political activist accounts, which they continue to follow even after switching off the algorithm, helping explain the asymmetry in effects. These results suggest that initial exposure to X’s algorithm has persistent effects on users’ current political attitudes and account-following behaviour, even in the absence of a detectable effect on partisanship."

nature.com/articles/s41586-026

0

Fedify 2.0.0 is here!

This is the biggest release in Fedify's history. Here are the highlights:

  • Modular architecture — The monolithic @fedify/fedify package has been broken up into focused, independent packages: @fedify/vocab, @fedify/vocab-runtime, @fedify/vocab-tools, @fedify/webfinger, and more. Smaller bundles, cleaner imports, and the ability to extend ActivityPub with custom vocabulary types.
  • Real-time debug dashboard — The new @fedify/debugger package gives you a live dashboard at /__debug__/ showing all your federation traffic: traces, activity details, signature verification, and correlated logs. Just wrap your Federation object and you're done.
  • ActivityPub relay support — First-class relay support via @fedify/relay and the fedify relay CLI command. Supports both Mastodon-style and LitePub-style relay protocols (FEP-ae0c).
  • Ordered message delivery — The new orderingKey option solves the “zombie post” problem where a Delete arrives before its Create. Activities sharing the same key are guaranteed to be delivered in FIFO order.
  • Permanent failure handlingsetOutboxPermanentFailureHandler() lets you react when a remote inbox returns 404 or 410, so you can clean up unreachable followers instead of retrying forever.

Other changes include content negotiation at the middleware level, @fedify/lint for shared linting rules, @fedify/create for quick project scaffolding, CLI config files, native Node.js/Bun CLI support, and many bug fixes.

This release includes significant contributions from Korea's OSSCA participants. Huge thanks to everyone involved!

This is a major release with breaking changes—please check the migration guide before upgrading.

Full release notes: https://github.com/fedify-dev/fedify/discussions/580

3
5
0
1
0
0
1