Elektrine
Log in Register
Paige Chat Timeline Gallery Friends Email Drive DNS Private DNS Domains VPN Kairo Nerve
Remote

Per Vognsen

@pervognsen@mastodon.social
mastodon 4.8.0-nightly.2026-10-06
  • Open on mastodon.social

I like programming and understanding how stuff works. My background is in systems programming and game development.

0 Followers
0 Following
50 Posts
Joined September 11, 2018
Open post
Per Vognsen @pervognsen@mastodon.social
· 2w ago

Name something more iconic than the TP7-era color scheme of Turbo Vision: https://free.oberon.org/docs/en/Strings.html

free.oberon.org
9
0
2
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 2w ago

What is going on in C++ land... "When possible, avoid the u8 prefix. It has significantly different semantics starting in C++20 than in C++17, producing arrays of char8_t rather than char, and will change again in C++23."

9
0
1
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 2w ago

Almost every time I see saturating add/multiply used to avoid overflows, it's silently wrong or if it's only accidentally right (just because a big wrong number from saturation is a safer bound than a small wrong number from wrapping).

6
0
2
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 2w ago

The scourge of x86 emulation: https://fex-emu.com/Scourge-of-emulation/. An article on TSO emulation by the FEX devs. When I saw the (excellent!) presentation at CCC on FEX this year my biggest question was about how they were dealing with TSO.

fex-emu.com

The scourge of x86 emulation

4
0
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 2w ago

What is going on in C++ land... "When possible, avoid the u8 prefix. It has significantly different semantics starting in C++20 than in C++17, producing arrays of char8_t rather than char, and will change again in C++23."

4
0
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 2w ago
Boosted by @joe@f.duriansoftware.com
Replying to
@joe@f.duriansoftware.com Remember when this was all the rage in UI design?
1
1
2
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 7mo ago

How to recalculate a spreadsheet, https://lord.io/spreadsheets/. Not just about spreadsheets, but any structurally similar system. A great, accessible overview if you don't feel like diving through the literature.

lord.io
25
0
8
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 2mo ago
Replying to
@jplebreton@mastodon.social The future is high carb.
3
0
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 7mo ago

I guess this deserves to be posted on a regular cadence for the benefit of anyone who hasn't seen it before: https://www.dkriesel.com/en/blog/2013/0802_xerox-workcentres_are_switching_written_numbers_when_scanning

dkriesel.com
19
1
12
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 7mo ago

Once again reminding you of The Trick to reduce the critical decoding path of any off-the-shelf variable-length data format. Split each variable-length item into a small fixed-length part that uniquely determines the length of the remaining variable-length part. Then split the fixed-length and variable-length parts into two streams and use prefix sums: https://gist.github.com/pervognsen/547113f6b368317d86110a6bb01ce314

gist.github.com
19
7
8
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 7mo ago

An interesting example of parallel discovery: the zero memory widget (ZMW) library released in 2003 (discovered in 2001-2002) vs Casey's first presentation of immediate-mode UI in 2005 (discovered in 2002). I assume approximately no-one has heard of ZMW. https://perso.univ-lyon1.fr/thierry.excoffier/ZMW/zmw-0.2.4/zmw.html

perso.univ-lyon1.fr
15
1
3
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 5mo ago

With the DRAM shortage, maybe it's time for RAM Doubler and other assorted scamware to make a comeback. On that note, https://devblogs.microsoft.com/oldnewthing/20211111-00/?p=105897

devblogs.microsoft.com
7
7
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 6mo ago
Replying to
The ultimate reductio ad absurdum would be if we start putting machine code bytes in inline asm blocks only for compilers to eventually start "helpfully" disassembling them to perform intrinsic substitutions.
7
3
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 7mo ago
Replying to
@regehr@mastodon.social @zwarich@hachyderm.io @joe@f.duriansoftware.com Heh, speaking of 0.0f/0.0f crashing the tested compiler (one of the table 1 examples), you can still crash tcc today (last I checked) with INT_MIN/-1 on x86. I like to test any program that has a built-in expression evaluator with that and it's scary (but many not surprising) how many you can crash with it.
7
1
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 5mo ago
Replying to
@steve@discuss.systems @joe@f.duriansoftware.com I'm more interested in the SIGBOVIK version of this, inspired by those terrible underdetermined sequence extrapolation puzzles. On a side note, when I first was exposed to Haskell in the late 90s and saw the syntax [a, b..c] I was excited for a second that it might be more general (i.e. not be limited to arithmetic progressions).
4
0
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 5mo ago
Replying to
@zeux@mastodon.gamedev.place It's funny to think back to how much confusion there was about tangent space generation in the early days of the normal mapping era. It's not something I've thought about in approximately 20 years, so I'm looking forward to what you're cooking.
4
6
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 6mo ago
Replying to
@dougall@mastodon.social Return of the king! I was so sad that uops had gotten stale.
4
1
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 5mo ago
Replying to
@joe Rolex Cenobite
3
0
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 5mo ago
Replying to
@joe Throw in a Game Boy Printer and now we're talking.
3
2
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 6mo ago
Replying to
@adrian@discuss.systems This reminds me, I currently have separate Firefox add-ons for old.reddit.com and nitter.net redirects. There should really just be a generic regex-based redirect add-on. I just checked, and indeed there is: https://addons.mozilla.org/en-US/firefox/addon/redirector/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search
Redirector – Get this Extension for 🦊 Firefox (en-US)
addons.mozilla.org

Redirector – Get this Extension for 🦊 Firefox (en-US)

Download Redirector for Firefox. Automatically redirects to user-defined urls on certain pages

3
0
1
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 5mo ago
Replying to
Example: In C, ? : is annoying in a single-pass compiler because you have to go back and insert an int-to-double conversion at the end of the basic block, or more likely you use a shim basic block just for that conversion (which I believe is what tcc does), once you determine that the overall expression has type double. You have the same problems (and same solutions) when single-pass compiling the equivalent case with let assignments.
2
2
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 5mo ago
Replying to
I guess in the case of airlines they don't even need to appeal to force majeure because they already cancel underbooked and otherwise unprofitable flights all the time, so this is an application of existing practices on a larger scale.
2
1
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 5mo ago

The NBA Jam repo on historicalsource has a bunch of doc files that are a time capsule from 1992. Here's a fun excerpt, relative to what actually happened: "The NBA has been cautious about entering the European market, it's understandable. The NBA, it is believed, will grant franchises and expand into Europe within the next few years." https://github.com/search?q=repo%3Ahistoricalsource%2Fnbajam-complete%20doc&type=code

Build software better, together
GitHub

Build software better, together

GitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects.

2
1
2
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 5mo ago
Replying to
@joe I'm going to bet this is closer to "random junk in the attic" than "divorce asset".
2
4
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 7mo ago
Replying to
@ocornut@mastodon.gamedev.place Well deserved. Congrats. :)
2
0
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 7mo ago
Replying to
Also, I didn't know that VisiCalc literally did brute-force fixed-point iteration without any sorting, so that was a neat bit of history on its own.
2
0
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 7mo ago
Replying to
@soller@floss.social Yup. Even my most optimistic prediction involves it getting a lot worse before it starts getting better again.
2
0
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 7mo ago
Replying to
@glassbottommeg A musou game with mice? A mousou game?
2
0
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 7mo ago
Replying to
@sschoener@mastodon.gamedev.place @vurtun@mastodon.gamedev.place There's ZLUDA as well in the "CUDA on AMD" category and it's much further along: https://vosen.github.io/ZLUDA/blog/zluda-update-q4-2025/ If you write stuff like "LLVM is NOT required. BarraCUDA does its own instruction encoding like an adult" (which the README is full of) any criticism of your effort seems fair game. It would definitely be nice to have something standalone, though.
vosen.github.io
2
2
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 7mo ago
Replying to
@wolfpld@mastodon.gamedev.place The paradox of tolerance but for coding agents: if you use coding agents, should you use coding agents written by coding agents?
2
6
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 5mo ago
Replying to
The simplest version of the single-pass algorithm (with no support for subtyping) is that the first (in source order) assignment to a let variable fixes the variable's type and any other assignments to the same variable (necessarily on disjoint paths) check against that type. Anyway, I used to think that one objective advantage of expression-oriented initialization was its simpler interaction with type propagation, but this shows that isn't actually a real difference.
1
3
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 6mo ago
Replying to
@siguza BTW, I should have clarified (as mentioned later in the linked thread) that this feature was actually removed in response: https://github.com/llvm/llvm-project/issues/156571 So all is well, for now.
GitHub

Delete ExpandInlineAsm · Issue #156571 · llvm/llvm-project

LLVM generally treats the contents of inline-asm as a black box -- not optimizing based on what's in the asm-string, just the constraints. There is an exception, however: a hack, "ExpandInlineAsm",...

1
0
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 6mo ago
Replying to
@lenary Yeah, found the comments on that in the proposed LangRef changes. It's good that this is at least getting nailed down.
1
1
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 7mo ago
Replying to
@bal4e You're catching up. :)
1
2
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 7mo ago
Replying to
@adrian@discuss.systems Boo! I'm sure they were great.
1
0
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 7mo ago
Replying to
@harold I always think of it like flying around the Earth to chase the Sun--ultimately you have to "pay off" your time debt in a feedback circuit, but you can shift around where it is in the multi-cycle feedback loop depending on timing closure requirements.
1
0
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 7mo ago
Replying to
@vurtun@mastodon.gamedev.place @sschoener@mastodon.gamedev.place Also, it's not "just" documentation and tests he's writing with coding agents. Just look at his GH output. It's hundreds of thousands of lines per month for dozens of new projects. Here's just one initial commit for one of his random projects that has 300,000 added lines.
1
0
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 7mo ago
Replying to
@chandlerc@hachyderm.io @meowray@hachyderm.io The review culture thing also came up in https://www.npopov.com/2026/01/11/LLVM-The-bad-parts.html
npopov.com

LLVM: The bad parts

1
0
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 7mo ago
Replying to
@steve@discuss.systems It sounds like you're asking for _woke_ self-driving.
0
2
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 5mo ago
Replying to
@zeux Sure, in this case I'm just trying to describe how the two cases (assignment vs expression-oriented initialization) aren't any better or worse for this kind of example, for the small subset of people who care about such things (a non-empty set that includes me).
0
0
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 7mo ago
Replying to
@zeux My immediate use-case is actually a lot like that but rather than chunking by a fixed quantity like K it's chunking on basic block boundaries for a variable-length instruction format.
0
0
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 7mo ago
Replying to
@shachaf The ability to split on basic block boundaries like that does assume you have some sort of static or dynamic CFI validation so untrusted code can't jump into the middle of basic blocks.
0
2
0
0
Open post
Per Vognsen @pervognsen@mastodon.social
· 6mo ago
Replying to
@MikkoMononen@mastodon.gamedev.place Nice article! Even augmented with some of the additional information (e.g. the override flags), the derived data still feels more like a snapshot representation than a delta/change-based representation. My intuition is that a delta representation would be better at capturing the user's intention and therefore be better for rebasing, but I haven't thought deeply about it.
0
4
0
0
Back
313k7r1n3
Elektrine

Tor hidden service

elekhj7afj4qnrr4yd3bkzslsyo5jgfxw3orgjkhlcxifueodybyiiad.onion

I2P eepsite

j6b6cyk6gjmepjih7jjadxgxvvf3lzzujljuu2v4biemzpg3naya.b32.i2p

Platform

  • Email
  • Chat
  • Timeline
  • VPN
  • DNS

Company

  • About
  • Contact
  • FAQ
  • Lite (no JS)

Legal

  • Terms of Service
  • Privacy Policy
  • Transparency Report
  • Report Abuse
  • Warrant Canary
  • VPN Policy

Support

  • support@elektrine.com
  • Report Security Issue
Mail client setup IMAP mail.elektrine.com:993 POP3 mail.elektrine.com:995 SMTP mail.elektrine.com:465
© 2026 Elektrine. All rights reserved. Server: 19:57:47 UTC