HNHacker News
TopNewBestAskShowJobs

kfuse

35 karma · joined December 9, 2024

submissionscomments
kfuse··on Go 1.27 Interactive Tour
No need to insult JavaScript. In two out of three times the "JavaScript" written will be something like:

    interface Box<T> { value: T }

    function map<T, U>(input: Box<T>, func: (value: T) => U): Box<U> {
        return { value: func(input.value) }
    }
kfuse··on How Our Rust-to-Zig Rewrite Is Going
C# was already a very mature language when it had referenes and later "ref safety" added to it.
kfuse··on JVM Options Explorer
They do worry, they just can't do anything about it. Like the fact that error handling code takes at least three lines no matter how trivial it is. I'm sure error handling would not be critisized nearly as much if it didn't consume so much vertical space and could fit in one line, which go compiler does allow.
kfuse··on Stride Game Engine 4.3 with .NET 10 Support
Raylib is a very good option for 2D games. For me it was the easiest way to translate my toy Doom renderer from javascript that used html canvas to C#.
kfuse··on .NET 10
Updated a pet project of mine and got a minor break:

  var pixels = new uint[renderers.width * renderers.height];
  var pixels2 = MemoryMarshal.Cast<uint, ulong>(pixels);
  pixels2[idx] = ...
In NET9.0 pixels2 were Span<ulong>, but in NET10.0 a different MemoryMarshal.Cast overload is used and it is ReadOnlySpan<ulong> now, so the assignment fails.

Spans is such a fundamental tool for low level programming. It is really unfortunate they were added relatively late to the language. Now every new version includes a slew of improvements related to them but they will never be as good as if they were there from the start or at least as early as generics were.

kfuse··on JVM exceptions are weird: a decompiler perspective
That's not just Java and there is nothing really cursed about it: throwing in a finally block is the most common example. Jump statements are no different, you can't just ignore them when they override the return or throw statements.
kfuse··on Modern Node.js Patterns
Node now has limited supports for Typescript and has SQLite built in, so it becomes really good for small/personal web oriented projects.
kfuse··on Interstellar Flight: Perspectives and Patience
Jupiter is 5 times farther from the Sun than us, there is basically no lighting and heat from the Sun there.

I think for a civilization capable of sending reasonable amount of people people at reasonable speeds to colonize such planets, creating suitable atmosphere, lighting and heating is very much possible. Gravity is the only hard requirement.

kfuse··on Interstellar Flight: Perspectives and Patience
Why is everyone so fixed on interstellar travel? What if the galaxy is chock full of rogue planets? There may be hundreds if not thousands of worlds between us and the surrounding stars. Hopefully, Roman Telescope set to launch in 2027 is going to find lots of them.
kfuse··on Helion: A modern fast paced Doom FPS engine in C#
As I said, traditional doom bsp-walker software renderer is quite parallelizable. You can split the screen vertically into several subscreens and render them separately (does wonders for epic maps). The game logic, or at least most of it, can probably be run in parallel with the rendering.

And I don't think any of the above is necessary. Even according to their graphs popular doom ports can render huge maps at sufficiently high fps on reasonably modern hardware. The goal of this project, as stated in the doomworld thread, is to be able to run epic maps on a potato.

kfuse··on Helion: A modern fast paced Doom FPS engine in C#
"Rendering engine is also completely orthogonal to polygon-based 3D accelerators"

Software rendering engine, yes (and even then you can parallelize it). But there is really no reason why doom maps can't be broken down in polygons. Proper sprite rendering is a problem, though.

kfuse··on DotnetSnes: Library allowing to use C# to create SNES ROMs
Frankly, that doesn't explain much, because that sounds like how modern computing works: every program has its own continuos 32/64 bit address space. With 24 bits you can address 16MB which seems enough to be useful if you throw away reflection and such.
kfuse··on Span<T>.SequenceEquals is faster than memcmp
All modern popular languages are fast, except the most popular one.
kfuse··on Xee: A Modern XPath and XSLT Engine in Rust
Maybe one reason is its verbosity for small everyday tasks, like config files or when representing arrays. If xml allowed empty tags there probably would be no need for json.
kfuse··on Doom, the Gallery Experience
Doom doesn't use raycasting, it uses binary space partitioning.

From the description it seems to be a DOOM clone. Physics feels a bit off, but all the little details may trick you into believing that it's the real thing.