frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

The Scalar Select Anti-Pattern

https://matklad.github.io/2025/05/14/scalar-select-aniti-pattern.html
47•goranmoomin•8mo ago

Comments

castratikron•8mo ago
As long as processing one event does not affect any of the other events in the batch. E.g. events are file IO, and processing one event causes another event's descriptor to get closed before that event can be processed.
wahern•8mo ago
If the close routine on an event source, or the low-level (e.g. epoll) registration, deregistration, and dequeueing logic doesn't know how to keep polling and liveness state consistent between userspace and the kernel, they've got much bigger problems. This looks like Rust code so I would hope the event stream libraries are, e.g., keeping Rc'd file objects and properly managing reference integrity viz-a-viz kernel state before the application caller ever sees the first dequeued event in a cycle. This is a perennial issue with event loop libraries and buggy application code (in every language). One can't just deal with raw file descriptors, call the close syscall directly, etc, hoping to keep state consistent implicitly. There's an unavoidable tie-in needed between application's wrappers around low-level resources and the event loop in use.
taeric•8mo ago
I'm not entirely clear on what the proposal is at the end? Seems that the long term answer as to "which of these implications to pursue" is "all of them?" Simply taking in a batch of instructions doesn't immediately change much? You still have to be able to do each of the other things. And you will still expect some dependencies between batches that could possibly interact in the same ways.

In a sense, this is no different than how your processor is dealing with instructions coming in. You will have some instructions that can be run without waiting on previous ones. You will have some that can complete quickly. You will have some that are stalled on other parts of the system. (I'm sure I could keep wording an instruction to match each of the implications.)

To that end, part of your program has to deal with taking off "whats next" and finding how to prepare that to pass to the execution portion of your program. You can make that only take in batches, but you are almost certainly responsible for how you chunk them moreso than whatever process is sending the instructions to you? Even if you are handed clear batches, it is incumbent on you to batch them as they go off to the rest of the system.

lmz•8mo ago
I guess the proposal is "instead of fetching and acting on one event at a time, consider fetching all available events and look for opportunities to optimize which ones you process (e.g. by prioritization or by skipping certain events if superseded by newer ones)".
taeric•8mo ago
I mean, I got that. But you could as easily say "instead of fetching and acting on one event at a time, fetch and triage/route instructions into applicable queues."

In particular, there is no guarantee that moving to batches changes any of the problems you may have from acting on a single one at a time. To that end, you will have to look into all of the other strategies sooner or later.

Following from that, the problem is not "processMessage" or whatever. The problem is that you haven't broken "processMessage" up into the constituent "receive/triage/process/resolve" loop that you almost certainly will have to end up with.

malkia•8mo ago
in CPU's - pipelining!
jchw•8mo ago
I believe something similar is going on internally in Windows with event queues. It coalesces and prioritizes input events when multiple of them pile up before you're able to pop new events off of the queue. (For some events, e.g. pointer events, you can even go and query frames that were coalesced during input handling.) On the application/API end, it just looks like a "scalar select" loop, but actually it is doing batching behavior for input events!

(On the flip side, if you have a Wayland client that falls behind on processing its event queue, it can crash. On the whole this isn't really that bad but if you have something sending a shit load of events it can cause very bad behavior. This has made me wonder if it's possible, with UNIX domain sockets, to implement some kind of event coalescing on the server-side, to avoid flooding the client with high-precision pointer movement events while it's falling behind. Maybe start coalescing when FIONREAD gets to some high watermark? No idea...)

There's a ridiculous amount of tech in a disposable vape

https://blog.jgc.org/2026/01/theres-ridiculous-amount-of-tech-in.html
229•abnercoimbre•1d ago•183 comments

1000 Blank White Cards

https://en.wikipedia.org/wiki/1000_Blank_White_Cards
105•eieio•4h ago•18 comments

ASCII Clouds

https://caidan.dev/portfolio/ascii_clouds/
125•majkinetor•5h ago•24 comments

A 40-line fix eliminated a 400x performance gap

https://questdb.com/blog/jvm-current-thread-user-time/
232•bluestreak•8h ago•46 comments

Every GitHub object has two IDs

https://www.greptile.com/blog/github-ids
197•dakshgupta•15h ago•49 comments

The Gleam Programming Language

https://gleam.run/
76•Alupis•4h ago•23 comments

Show HN: OSS AI agent that indexes and searches the Epstein files

https://epstein.trynia.ai/
62•jellyotsiro•5h ago•17 comments

Show HN: 1D-Pong Game at 39C3

https://github.com/ogermer/1d-pong
13•oger•2d ago•1 comments

The $LANG Programming Language

163•dang•7h ago•30 comments

vLLM large scale serving: DeepSeek 2.2k tok/s/h200 with wide-ep

https://blog.vllm.ai/2025/12/17/large-scale-serving.html
89•robertnishihara•15h ago•7 comments

Show HN: Cachekit – High performance caching policies library in Rust

https://github.com/OxidizeLabs/cachekit
29•failsafe•5h ago•2 comments

The truth behind the 2026 J.P. Morgan Healthcare Conference

https://www.owlposting.com/p/the-truth-behind-the-2026-jp-morgan
185•abhishaike•13h ago•36 comments

Stop using natural language interfaces

https://tidepool.leaflet.pub/3mcbegnuf2k2i
55•steveklabnik•5h ago•10 comments

No management needed: anti-patterns in early-stage engineering teams

https://www.ablg.io/blog/no-management-needed
149•tonioab•12h ago•168 comments

The Emacs Widget Library: A Critique and Case Study

https://www.d12frosted.io/posts/2025-11-26-emacs-widget-library
50•whacked_new•2d ago•10 comments

Show HN: The Tsonic Programming Language

https://tsonic.org
19•jeswin•14h ago•4 comments

Are two heads better than one?

https://eieio.games/blog/two-heads-arent-better-than-one/
155•evakhoury•15h ago•46 comments

Sei (YC W22) Is Hiring a DevOps Engineer (India/In-Office/Chennai/Gurgaon)

https://www.ycombinator.com/companies/sei/jobs/Rn0KPXR-devops-platform-ai-infrastructure-engineer
1•ramkumarvenkat•6h ago

The Tulip Creative Computer

https://github.com/shorepine/tulipcc
211•apitman•14h ago•49 comments

AI generated music barred from Bandcamp

https://old.reddit.com/r/BandCamp/comments/1qbw8ba/ai_generated_music_on_bandcamp/
722•cdrnsf•13h ago•511 comments

Handling secrets (somewhat) securely in shells

https://linus.schreibt.jetzt/posts/shell-secrets.html
44•todsacerdoti•4d ago•20 comments

How to make a damn website (2024)

https://lmnt.me/blog/how-to-make-a-damn-website.html
182•birdculture•14h ago•56 comments

Agonist-Antagonist Myoneural Interface

https://www.media.mit.edu/projects/agonist-antagonist-myoneural-interface-ami/overview/
54•kaycebasques•5d ago•3 comments

Scott Adams has died

https://www.youtube.com/watch?v=Rs_JrOIo3SE
896•ekianjo•16h ago•1406 comments

Exa-d: How to store the web in S3

https://exa.ai/blog/exa-d
25•willbryk•6h ago•1 comments

Why we built our own background agent

https://builders.ramp.com/post/why-we-built-our-background-agent
89•jrsj•1d ago•12 comments

April 9, 1940 a Dish Best Served Cold

https://todayinhistory.blog/2021/04/09/april-9-1940-a-dish-best-served-cold/
15•vinnyglennon•4d ago•2 comments

When hardware goes end-of-life, companies need to open-source the software

https://www.marcia.no/words/eol
267•Marciplan•8h ago•83 comments

Show HN: Nogic – VS Code extension that visualizes your codebase as a graph

https://marketplace.visualstudio.com/items?itemName=Nogic.nogic
103•davelradindra•12h ago•37 comments

We can't have nice things because of AI scrapers

https://blog.metabrainz.org/2025/12/11/we-cant-have-nice-things-because-of-ai-scrapers/
371•LorenDB•9h ago•197 comments