Recent submissions

Comment · 5 months ago
Another weird corner case is that COP2 (GTE) instructions actually start executing one instruction early with respect to where the program counter is. As a result when an exception happens the kernel interrupt handler checks to see if the next instruction is COP2 and has to add 4 to the program counter in order to not execute it twice.

Also COP2 instructions were not allowed in branch delay slots (presumably for similar reasons), however some games (from memory Tekken3) do actually do this. I always wondered if it was a sneaky anti-emulation thing :) (because many emulators had issues with this, or needed special handling).

Comment · 1 year ago
No love for MultiEdit? :(
Comment · 1 year ago
Comment · 1 year ago
I mean, yeah, technically true - although you would connect in untrusted mode if you didn't trust the machine where you were editing code. At that point it should only be slightly more dangerous than opening a web page from the remote server.

So yeah, if you don't trust the remote machine then I agree - you probably shouldn't use it. But I don't really think that's the use-case they had in mind.

Comment · 1 year ago
How does it differ from just logging into that machine and running code?
Comment · 1 year ago
Most of us have learned <esc>:q by now. And then apt-get remove vim :)
Comment · 1 year ago
btw: you can actually write, for example, the first function as just:

    auto first(auto... params) { return params...[0]; }
Unless I'm missing something - but the post is showing off the fact that you can index into the list of types of the parameters, as well as the parameters themselves (in which case you need full template syntax).
Comment · 1 year ago
array[index] is insane syntax? That's all that's being talked about here (allowing array-like indexing of parameter packs which are variadic template parameters).
Comment · 2 years ago
Sudeki was better. Long live SOL :)
Comment · 3 years ago
My Russian girlfriend did not even know that кринж (cringe) was an English word. Not only that, it has been imported as an adjective just like its use in English internet slang (e.g. that's cringe). Then a verb was formed from that: кринжевать.
Comment · 3 years ago
Windows 10 had the text "Type here to search" in its search box so it was even worse by 3 words
Comment · 3 years ago
Both KDE and Gnome seem to have the text "Search" in their search boxes too (Gnome is an even worse choice, it has "Type to search" in its search box)
Comment · 4 years ago
This is nonsense. The main reason behind the demise of dedicated sound cards: motherboard sound chipsets got "good enough". The value add wasn't adding enough value any more because you can get decent sound quality just by using the default sound output provided by your motherboard.

3D sound and other processing got baked into middleware for games because it became trivial to do all of the processing in software - and the processing became more advanced than anything that the sound card vendors were offering (and they didn't move quickly enough anyway).

Pro audio vastly progressed past anything that is possible to provide in fixed silicon. For input, dedicated USB (and ethernet) audio interfaces progressed to the point where it would be ridiculous to provide such functionality on a general "sound card".

It's just evolution - there just isn't a compelling enough niche for a dedicated sound card any more.

Comment · 4 years ago
You do need a very different design to efficiently target D3D12 and Vulkan. You need to think in terms of pipelines, root signatures/descriptor layouts, tables of descriptors and resource transitions. But its quite easy to also target D3D11 in this way:

Pipeline state -> struct of the 3 or 4 state objects + a few values (this actually makes redundancy checking easier and can actually be a win :)

Root signature -> fixed pre allocation of binding slots (this can even be done statically with templates if your root signature is known statically)

Tables of descriptors -> arrays of handles

(edit: you obviously cannot do the kinds of bindless things with D3D11 that you can do with D3D12 and Vulkan. But its common to have both bindless and non-bindless code paths with D3D12 and Vulkan anyway)

Resource transitions -> nothing

Comment · 5 years ago
While not being based on C DirectX actually has a C API, even for D3D12. For example to call device->CreateRootSignature(...) from C you call ID3D12Device_CreateRootSignature(device, ...).

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton