Sign in

iiinova is part of the Atmosphere — an open, public network where you own your identity.

Per Vognsen

@pervognsen.mastodon.social.ap.brid.gy
19 followers 0 following 407 posts

I like programming and understanding how stuff works. My background is in systems programming and game development. 🌉 bridged from ⁂ mastodon.social/@pervognsen, follow @ap.brid.gy to interact

PostsRepliesMedia
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 10h
I wanted to link a story to an anecdote that was basically someone pwning their own servers to perform a hot-code reload but I couldn't find the right the right search keywords. Does anyone know the story I'm thinking of?
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 11h
The most dynamic language is C. Every C program has a plugin system called shellcode.
101 1
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 11h
Reverse CTF codegolfing challenge: In 256 bytes of C source code, who can produce the greatest number of logically independent security vulnerabilities.
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 14h
@wolf480pl That's even more hardcore than me. I do think automated signature-level static regression analysis at a minimum should be done. Elm has a particularly simple approach to that due to its simple type system. Rust has semver-checks, which is anything but simple or complete, but is an […]
mastodon.social
Original post on mastodon.social
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 20/10/2026
The mind of the dynamic language proponent works in incredible ways. Apparently the problem with modern software is that it's _too_ correct! "Sometimes I think modern software cares too much about correctness. Sometimes a few wrong answers are fine, if the overall thing is just more ergonomic […]
mastodon.social
Original post on mastodon.social
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 20/10/2026
It looks like the BLIS/FLAME folks are still chugging away at it. Here's a recent (2023) paper: Towards a Unified Implementation of GEMM in BLIS. dl.acm.org/doi/pdf/10.1145/3577193.…
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 20/10/2026
One of my favorite diagrams in computing.
The 5-loop diagram of BLIS's formulation of Goto's GEMM structure.
021 2
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 20/10/2026
Unfortunately I think that also means even lower bar to entry, higher trust communities like itch.io have to develop new norms and possibly technical mitigations.
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 20/10/2026
I imagine industrial-scale spearphishing is going to be a thing nice with LLM juiced engagement and trust building. @runevision just posted something about some examples of aggressive engagement/trust farming and while that kind of thing could just be trying to get people to buy slop games on […]
mastodon.social
Original post on mastodon.social
100 1
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 20/10/2026
Incidentally, a version of this also happened with GCC vs EGCS. I think the initial EGCS split was less acrimonious but I don't know that I've read a detailed account.
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 20/10/2026
Anyway, jwz's page on the emacs/xemacs schism is worth a read if you've never read it: web.archive.org/web/20130227062803/…
web.archive.org
the Lemacs/FSFmacs schism
100 1
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 20/10/2026
Imagine having your project held hostage by RMS's technical direction circa 1993. "RMS is this great programmer. He's got GCC. He's got Emacs. He's got the MacArthur. He's got this luxurious pad on the fourth floor of posh NE43. I go to work for him, hoping some of that will rub off. It turns […]
mastodon.social
Original post on mastodon.social
100 1
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 20/10/2026
Just noticed this in the pending release notes for rustc 1.100: github.com/rust-lang/rust/pull/1620…. Although PS3 PPU programming with a lot of rustc/LLVM's current codegen habits sounds like it's going to be an LHS-tastic experience. I wonder what the open source toolchain options are […]
mastodon.social
Original post on mastodon.social
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 20/10/2026
Just got fucked by C locales yet again because I have the Thai locale.
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 20/10/2026
One of my favorite quality-of-life features of the fish shell is funcsave. You can just define 'function foo' inline in any fish instance and use the 'funcsave foo' command and it will save it to the right file. It does that for other config-style data as well.
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 19/10/2026
Are there any practical Spectre attacks against plain old programs (nothing looking like a VM) in the "weird machines" genre?
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 19/10/2026
(You can obviously disagree with his philosophy; he was a minimalist.)
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 19/10/2026
Wirth had a great quote I vaguely recall from one of his books or papers, but I haven't been able to track it down, so I might have spliced the memory together from several places. Basically, his philosophy of compilers is that the compiler for a given language should only optimize what cannot […]
mastodon.social
Original post on mastodon.social
100 1
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 18/10/2026
Does anyone LLVM folks know a minimal list of provenance-like assumptions that LLVM relies on? I believe the core alias analysis is just based on address range analysis, but you need at least some minimal provenance-like assumptions to justify why mem2reg can replace alloca/malloc with SSA […]
mastodon.social
Original post on mastodon.social
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 17/10/2026
Every once in a while, YouTube pulls a perfect recommendation from my old viewing history: www.youtube.com/watch?v=u43uH-kQpzk.
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 17/10/2026
@the_art_of_giving_up That last part is a feature to some people. :)
100 1
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 17/10/2026
Also, I use a copying collector approach to garbage collecting the non-transient data, and because the visit order is based on last frame's visit order of the nodes, you end up re-ordering the non-transient slot data for the surviving slots to align perfectly with the last visit order. It […]
mastodon.social
Original post on mastodon.social
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 17/10/2026
I.e. you use a key -> index hash table, where the associated data lives in a slot in a separate array at the given index. If you have a good prediction for the slot based on what happened last pass/build, you speculatively skip the hash table entirely and just check the slot at last frame's […]
mastodon.social
Original post on mastodon.social
100 1
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 17/10/2026
Actually, I'll mention one generic performance trick for immediate-mode UIs, but I've been using it for years and I might have mentioned it here before. Node keys tend to be stable from frame to frame in terms of visitation order, so it's a really strong candidate for 'finger search' when you're […]
mastodon.social
Original post on mastodon.social
100 1
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 17/10/2026
The first time I ever tried egui, the official demo had a list view that didn't run in O(1) time because the random-access culling logic was totally busted. That was eventually fixed but stuff like that is endemic. So if you wanted another excuse to avoid egui now that it's 100% slop-coded, you […]
mastodon.social
Original post on mastodon.social
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 17/10/2026
Also, this didn't negatively affect the worst-case where you're always forcing re-builds. For complex UIs, on a per-widget basis it ends up 2.5x-3x faster than dear imgui and 25x-30x faster than egui, mostly just as a result of performance engineering 101.
200 2
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 17/10/2026
For example, you can move the mouse cursor around inside the window and it won't trigger a re-build (i.e. an execution of the user-written code) until the cursor is over a box that registered interest in the mouse hover event. To make this work out correctly, I needed to nail down the UI […]
mastodon.social
Original post on mastodon.social
100 1
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 17/10/2026
I need to write up some of my findings from my last immediate-mode UI experiment, where I was focusing on figuring out how to aggressively idle and more generally minimize work without negatively affecting the immediate-mode semantics of the user-written code. I think the most interesting […]
mastodon.social
Original post on mastodon.social
100 1
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 17/10/2026
It actually seems like you might be able to pull this off without much modeling of the internal mechanism if only you could flush enough of the predictor state and then do replay attacks with longer and longer prefixes of mispredicted branches.
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 17/10/2026
Has anyone reverse engineered a state-of-the-art branch predictor in a modern processor to the extent that they can generate ~100% mispredicts on two-way branches?
100 1
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 16/10/2026
Black-Box HashDoS: Attacking Hash Tables Without Knowing the Hash Function, orlp.net/blog/black-box-hashdos
orlp.net
Black-Box HashDoS: Attacking Hash Tables Without Knowing the Hash Function | orlp.net
001 1
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 16/10/2026
Interesting definition of hygge.
"DRTV subject line: Autumn and dark evenings? We got your hygge right here!"Link to History, with a picture of an SS officer. Link to Current Affairs, with a picture of people gathered around a table in a war room.
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 15/10/2026
When I see game trailers with glaring frame pacing issues, I'm not sure whether to commend them for honest advertising or be upset that they couldn't even bother getting the trailer right. Everyone who's worked as a developer and had to deal with publisher-produced trailers know that they're […]
mastodon.social
Original post on mastodon.social
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 11/10/2026
Just finished mission 10 (out of 30) and still loving it but taking it slowly. On that note, one thing I don't love is having around 10 click-through splash screens every time I launch the game.
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 11/10/2026
@dpiponi (And if you take the coward's way out and do quotient estimation with binary search, you're more or less back to doing binary division in a trench coat.)
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 11/10/2026
@dpiponi As an aside, the first time I had to implement non-binary division in a computer, I realized that the "algorithm" we taught is missing the component that Knuth calls quotient estimation; it just so happens that with decimal (and even more so with binary) there's only 10 possible […]
mastodon.social
Original post on mastodon.social
110 1
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 10/10/2026
If you updated Firefox and wondered what the hell happened to the UI like I did, open about:config and set browser.nova.enabled = false.
001 1
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 09/10/2026
@kha I'm partial to the next level of pastel de nata where you add a cream cheese crust, so it's basically a miniature cheesecake egg custard tart.
100 1
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 09/10/2026
@rudi "Paying it forward" would mean e.g. publishing the now-uncapped-refcount copy with an atomic CAS so future readers don't have to make their own copy.
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 09/10/2026
@rudi Actually, I guess there's a flaw with this analysis in this case, similar to the naive version of this kind of thing that Okasaki covers in his book on functional data structures, which is what multiple readers can trigger the same worst-case cascade off of a shared refcount-capped copy […]
mastodon.social
Original post on mastodon.social
100 1
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 09/10/2026
@rudi You can prove that an overflow-triggered copy of a bounded-refcount node is amortized O(1) time and space. In the case of a 1-bit refcount on a linear chain of nodes, it behaves exactly like a binary counter and the analysis corresponds to the expected length of carry cascades. There's a […]
mastodon.social
Original post on mastodon.social
100 1
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 09/10/2026
@dpiponi Joining the illustrious company of North Korea and Saudi Arabia as one of the few places in the world to still have public executions by the state.
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 09/10/2026
Here's a random trick that can come in handy. For reference-counted copy-on-write tree nodes, you can get away with an unusually small number of refcount bits. When the refcount for a particular node is capped, you just make a copy.
100 1
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 08/10/2026
We are so back.
In-game screenshot of F14 in hangar bay of aircraft carrier, from the newly released Ace Combat 8: Wings of Theve.
100 1
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 07/10/2026
I'm already pipelining work across frames to cover the fan-in/fan-out utilization gap, but that's just for the per-rasterization work and the main thread is currently responsible for the present() and therefore waits for the last raster task to finish. So it doesn't really with the latency of […]
mastodon.social
Original post on mastodon.social
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 07/10/2026
I guess another and maybe better option in this particular case is triple buffering so straggler threads can finish their tasks targeting the old buffer while the rest of the threads move on to the next buffer while the oldest buffer is locked by compositor/scanout.
100 1
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 07/10/2026
This with a thread pool of size n-2 so I'm leaving an entire core to the kwin compositor and any other background system tasks. It's way more with n-1 or n-2. But at some point adding more headroom is only going to reduce the incidence rate, not eliminate it.
100 1
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 07/10/2026
Any time I see this kind of thing, it makes me want to do a wait-free helping scheme. With tile-based rendering it should be pretty easy since redundant writes to the framebuffer of the same final output is idempotent.
100 1
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 05/10/2026
@wingo Do you feel that way about planned obsolescence in general? There is a definitely a strong incentive to demonstrate a step-change to existing users when a new model launches, and humans suffer from recency bias. E.g. maybe continuous training "degrades" the model over time vs the offline […]
mastodon.social
Original post on mastodon.social
000 0
Per Vognsen @pervognsen.mastodon.social.ap.brid.gy · 05/10/2026
Per-core power-usage is 0.3 W for MWAITX (the C0 vs C1 variant is only +/- 0.02 W) vs 1.8 W for PAUSE, so it's also a pretty big difference if you care about such things. It's still going to count as busy to the kernel, hence why you probably always want to use MWAITX (the version with a […]
mastodon.social
Original post on mastodon.social
000 0