<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: mvx64</title><link>https://news.ycombinator.com/user?id=mvx64</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 18 May 2026 09:32:29 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=mvx64" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by mvx64 in "Show HN: TRUST – Coding Rust like it's 1989"]]></title><description><![CDATA[
<p>Works amazingly well: <a href="https://bsky.app/profile/mentalvertex.bsky.social/post/3lzvbqthees2n" rel="nofollow">https://bsky.app/profile/mentalvertex.bsky.social/post/3lzvb...</a></p>
]]></description><pubDate>Fri, 08 May 2026 00:46:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=48057056</link><dc:creator>mvx64</dc:creator><comments>https://news.ycombinator.com/item?id=48057056</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48057056</guid></item><item><title><![CDATA[New comment by mvx64 in "Don't throw away your old PC–it makes a better NAS than anything you can buy"]]></title><description><![CDATA[
<p>I know I am in the minority and my uses/needs/requirements are not average, but I am perfectly fine with running Xubuntu on the following hardware: 1) 4GB 2011 Thinkpad with HDD (yeah really) and 2) 4GB 2009 Phenom desktop (was Win10 until a month ago).<p>By fine I mean running all these at the same time: firefox with several tabs, development tools, Blender and GIMP. All snappy and fast. Even the HDD in the laptop is only an annoyance during/after a cold boot. Then it makes no difference. I daily drive both for the past 8-15 years. The laptop sits at ~10-15W idle and the i5 in it is a workhorse if needed.<p>Of course there are uses for better hardware, I am not dismissing upgrades. But the whole modern hw/sw situation is a giant shipwreck and a huge waste of resources/energy. I've tried very expensive new laptops for work (look up "embodied energy"), and Windows 11 right-click takes half a second to respond and Unity3D can take several minutes to boot up. It's really sad.<p>edit: To be honest I have to add a counter-example: streaming >=1080p60 video from YT is kind of a no-no, but that's related to the first sentence of my post.</p>
]]></description><pubDate>Sun, 30 Nov 2025 16:50:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=46098224</link><dc:creator>mvx64</dc:creator><comments>https://news.ycombinator.com/item?id=46098224</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46098224</guid></item><item><title><![CDATA[New comment by mvx64 in "Firefox profiles: Private, focused spaces for all the ways you browse"]]></title><description><![CDATA[
<p>I found out about profiles recently and I just couldn't believe that that's the standard way to access them. Also, it's not obvious which profile you are currently on, so there are some silly but necessary workarounds like having a dummy bookmark with the profile name on each or something like that, while it could just be a string next to the address bar.<p>It works really well though. Does exactly what I would expect and hope from such a feature.</p>
]]></description><pubDate>Thu, 06 Nov 2025 00:56:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=45830117</link><dc:creator>mvx64</dc:creator><comments>https://news.ycombinator.com/item?id=45830117</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45830117</guid></item><item><title><![CDATA[New comment by mvx64 in "rlsw – Raylib software OpenGL renderer in less than 5k LOC"]]></title><description><![CDATA[
<p>Shout out to King's Crook [1], a cool project using a custom C software renderer only using integers<p>[1] <a href="https://kingscrook.itch.io/kings-crook" rel="nofollow">https://kingscrook.itch.io/kings-crook</a></p>
]]></description><pubDate>Wed, 22 Oct 2025 10:40:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=45667169</link><dc:creator>mvx64</dc:creator><comments>https://news.ycombinator.com/item?id=45667169</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45667169</guid></item><item><title><![CDATA[New comment by mvx64 in "rlsw – Raylib software OpenGL renderer in less than 5k LOC"]]></title><description><![CDATA[
<p>If you keep resolution low, manage your scene complexity carefully and commit to the art style, you can make reasonable 3D games that run even on 20 year old hardware. I did so as an experiment on my game [1] [2] and now that I can see that it works, I am working on a second, more "serious" and complete one. Computers are fast.<p>[1] <a href="https://news.ycombinator.com/item?id=45270981">https://news.ycombinator.com/item?id=45270981</a><p>[2] <a href="https://totenarctanz.itch.io/a-scavenging-trip" rel="nofollow">https://totenarctanz.itch.io/a-scavenging-trip</a><p>Really cool news about raylib. I will seriously consider using this.</p>
]]></description><pubDate>Wed, 22 Oct 2025 10:30:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=45667100</link><dc:creator>mvx64</dc:creator><comments>https://news.ycombinator.com/item?id=45667100</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45667100</guid></item><item><title><![CDATA[New comment by mvx64 in "Show HN: A PSX/DOS style 3D game written in Rust with a custom software renderer"]]></title><description><![CDATA[
<p>It would be cool indeed, I played around with !include_str and co. and works as expected. It wouldn't be possible for the user to modify the assets though, and to save the settings file.</p>
]]></description><pubDate>Fri, 19 Sep 2025 14:02:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=45301801</link><dc:creator>mvx64</dc:creator><comments>https://news.ycombinator.com/item?id=45301801</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45301801</guid></item><item><title><![CDATA[New comment by mvx64 in "Show HN: A PSX/DOS style 3D game written in Rust with a custom software renderer"]]></title><description><![CDATA[
<p>Understandable. That's kind of the goal, the gameplay is very shallow complexity-wise, so raw responses/difficulty is one way to put some playing time into it.<p>There are some methods that help a lot, like keeping a <i>completely</i> perpendicular or parallel viewing direction, and adjusting the distance with the corresponding set of thrusters. Even slight angles mean you have to randomly mash forward/backward/left/right and hope to keep a steady orbit, it's not gonna happen.<p>For what it's worth, even for me now, it would take more than 10 tries probably to beat Master on Mission 1.</p>
]]></description><pubDate>Thu, 18 Sep 2025 00:04:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=45283078</link><dc:creator>mvx64</dc:creator><comments>https://news.ycombinator.com/item?id=45283078</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45283078</guid></item><item><title><![CDATA[New comment by mvx64 in "Show HN: A PSX/DOS style 3D game written in Rust with a custom software renderer"]]></title><description><![CDATA[
<p>Nice discussions! I've seen many of these projects lately around related communities. Happy to see a trend around this, as I really think there is actual merit in the topic. My project was more of a random timesink than something that pushes the matter forward though.<p>Do you mean directly e-mail/contact said person?</p>
]]></description><pubDate>Wed, 17 Sep 2025 22:54:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=45282420</link><dc:creator>mvx64</dc:creator><comments>https://news.ycombinator.com/item?id=45282420</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45282420</guid></item><item><title><![CDATA[New comment by mvx64 in "Show HN: A PSX/DOS style 3D game written in Rust with a custom software renderer"]]></title><description><![CDATA[
<p>Interesting, I will look more into this.<p>To be honest, grepping the source, I found a couple of places with for x in &myvec. Probably tried them while learning the language, they worked and left them there.<p>But really, I am just more used to the old way. It visually feels more familiar, I have an explicit i to do things, and it's easier to delete/manipulate elements while in the loop and not invalidate anything. It's not that I am against an iterator if it matters and it's better, of course.<p>In my case, the important loops are like "for i in x0..x1 { draw(i, y); }". Is there a way to turn this into something that, for example, skips the bound checks or optimizes it in any other way?</p>
]]></description><pubDate>Wed, 17 Sep 2025 22:15:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=45282030</link><dc:creator>mvx64</dc:creator><comments>https://news.ycombinator.com/item?id=45282030</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45282030</guid></item><item><title><![CDATA[New comment by mvx64 in "Show HN: A PSX/DOS style 3D game written in Rust with a custom software renderer"]]></title><description><![CDATA[
<p>Thanks for trying it out. It's a regular inverse square law, no tricks. The numbers (masses, distance) determine the final acceleration but not the actual trend of the curve.<p>I've become too familiar with it over testing to notice unintuitive behaviour, but I think I understand what feels off: in real world units, the gradual region you describe is very wide, and feels linear. This would make for very boring gameplay (imagine spending minutes to reach the planet). You need to keep the playable area [radiusForce0, radiusForceMax] small. So you will either map that small [r0, rmax] into real world [F0, Fmax], which means the force will be almost constant across, or "compress" the [F0, Fmax] curve so that you can fit both [zero outer space gravity, strong surface gravity] into that [r0, rmax].<p>That's what happens here, I probably tweaked the values for the second case. It's kind of an accelerated version of reality and the margins feel very tight, and you have to "buy into" that reality.<p>For example, Master difficulty in Mission 1 may seem impossible, but if you try to be gentle and find a balanced orbit, you can complete it with miniscule fluctuations in distance and minimal input.<p>Just rambling though, I never really actually designed or balanced the game.</p>
]]></description><pubDate>Wed, 17 Sep 2025 22:02:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=45281923</link><dc:creator>mvx64</dc:creator><comments>https://news.ycombinator.com/item?id=45281923</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45281923</guid></item><item><title><![CDATA[New comment by mvx64 in "Show HN: A PSX/DOS style 3D game written in Rust with a custom software renderer"]]></title><description><![CDATA[
<p>Actually yes! I use it when passing a texture into a draw function. I have a TexOrColor enum, and when calling the function you either provide an &Image or a &Color. Before that, if I wanted a colored textureless model, I passed a dummy 1x1 texture to sample from.<p>And of course, Options and pattern matching are easily the best part of the language and very powerful. I am obsessed with things like "let x = if {...}".</p>
]]></description><pubDate>Wed, 17 Sep 2025 15:00:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=45276678</link><dc:creator>mvx64</dc:creator><comments>https://news.ycombinator.com/item?id=45276678</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45276678</guid></item><item><title><![CDATA[New comment by mvx64 in "Show HN: A PSX/DOS style 3D game written in Rust with a custom software renderer"]]></title><description><![CDATA[
<p>You mean implicitly? I am aware that idiomatic Rust strongly prefers iterators over indices for performance, but in my case, the only place where it really matters is when counting pixels to draw, and there is no kind of collection there, just x,y numbers.</p>
]]></description><pubDate>Wed, 17 Sep 2025 14:51:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=45276555</link><dc:creator>mvx64</dc:creator><comments>https://news.ycombinator.com/item?id=45276555</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45276555</guid></item><item><title><![CDATA[New comment by mvx64 in "Show HN: A PSX/DOS style 3D game written in Rust with a custom software renderer"]]></title><description><![CDATA[
<p>I'll see if I can produce a reasonably readable stripped down version (the lib + an example scene) and I might be back soon ;)</p>
]]></description><pubDate>Wed, 17 Sep 2025 14:32:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=45276305</link><dc:creator>mvx64</dc:creator><comments>https://news.ycombinator.com/item?id=45276305</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45276305</guid></item><item><title><![CDATA[New comment by mvx64 in "Show HN: A PSX/DOS style 3D game written in Rust with a custom software renderer"]]></title><description><![CDATA[
<p>Right, it's a spectrum, you can't avoid some things (and rightly so).<p>Another soft rule: no member functions (except for the Scenes); structs are only data, all functions are free functions.<p>Also no operator overloading, so yes, lots of Vec3::add(&v1, &v2). I was hesitant at first but this makes for more transparent ops (* is dot or cross?) and does not hide the complexity.<p>The whole thing is around 6-7kloc and I think it would be possible to rewrite in C++ in a day or two.</p>
]]></description><pubDate>Wed, 17 Sep 2025 13:52:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=45275866</link><dc:creator>mvx64</dc:creator><comments>https://news.ycombinator.com/item?id=45275866</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45275866</guid></item><item><title><![CDATA[New comment by mvx64 in "Show HN: A PSX/DOS style 3D game written in Rust with a custom software renderer"]]></title><description><![CDATA[
<p>It's all single threaded. Just structs being passed around. For example, the mesh drawing call is:<p>drawmeshindexed(m: &Mesh, mat: &Mat4x4, tex: &Image, uv_off: &TexCoord, li: &LightingInfo, cam: &Camera, buf: &mut Framebuffer)<p>so there is also no global state/objects. All state is passed down into the functions.<p>There were some cases that RefCells came in handy (like having an array of references of all models in the scene) and lifetimes were suggested by the compiler at some other similar functions, by I ended up not using that specific code. To be clear, I have nothing against those (on the contrary), it just happened that I didn't need them.<p>One small exception: I have a Vec of Boxes for the scenes, as SceneCommon is an interface and you can't just have an array of it, obviously.</p>
]]></description><pubDate>Wed, 17 Sep 2025 12:20:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=45274969</link><dc:creator>mvx64</dc:creator><comments>https://news.ycombinator.com/item?id=45274969</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45274969</guid></item><item><title><![CDATA[New comment by mvx64 in "Show HN: A PSX/DOS style 3D game written in Rust with a custom software renderer"]]></title><description><![CDATA[
<p>It's a very procedural style. I have not used: iterators, lifetimes, Arcs/Boxes/RefCells and whatnot, any kind of generics, data structures other than vecs/arrays, async, and many more. Also avoided functional style, builder patterns...<p>I only used traits to more easily implement the scenes; a Scene needs to implement a new(), a start() and an update(), so that I can put them in an array and call them like scenes[current_scene_idx].update() from the main loop.<p>Also, I used some short and simple closures to avoid repeating the same code in many places (like a scope-local write() closure for the menus that wraps drawtext() with some default parameters).<p>The vast majority of the time is spent in the triangle filling code, where probably some autovectorization is going on when mixing colors. I tried some SIMD there on x86 and didn't see visible improvements.<p>Apart from obvious and low-hanging fruit (keeping structs simple, keeping the cache happy, don't pass data around needlessly) I didn't do anything interesting. And TBH profiling it shows a lot of cache misses, but I didn't bother further.</p>
]]></description><pubDate>Wed, 17 Sep 2025 10:32:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=45274054</link><dc:creator>mvx64</dc:creator><comments>https://news.ycombinator.com/item?id=45274054</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45274054</guid></item><item><title><![CDATA[New comment by mvx64 in "Show HN: A PSX/DOS style 3D game written in Rust with a custom software renderer"]]></title><description><![CDATA[
<p>Yeah it should be just a simple cargo build. But for the same reason it should be playable through any emulator/translation/VM layer as you mentioned.</p>
]]></description><pubDate>Wed, 17 Sep 2025 10:05:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=45273868</link><dc:creator>mvx64</dc:creator><comments>https://news.ycombinator.com/item?id=45273868</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45273868</guid></item><item><title><![CDATA[New comment by mvx64 in "Show HN: A PSX/DOS style 3D game written in Rust with a custom software renderer"]]></title><description><![CDATA[
<p>Didn't know this, but I'd rather not use github to be honest. Isn't there also some kind of signing required to publish a Mac build?</p>
]]></description><pubDate>Wed, 17 Sep 2025 10:02:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=45273852</link><dc:creator>mvx64</dc:creator><comments>https://news.ycombinator.com/item?id=45273852</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45273852</guid></item><item><title><![CDATA[New comment by mvx64 in "Show HN: A PSX/DOS style 3D game written in Rust with a custom software renderer"]]></title><description><![CDATA[
<p>The game-side code, not really (I am ashamed of reading it myself). The engine-side is a bit less shameful, but I'd rather not as I mentioned elsewhere, especially on github. I may change my mind though.</p>
]]></description><pubDate>Wed, 17 Sep 2025 09:58:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=45273831</link><dc:creator>mvx64</dc:creator><comments>https://news.ycombinator.com/item?id=45273831</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45273831</guid></item><item><title><![CDATA[New comment by mvx64 in "Show HN: A PSX/DOS style 3D game written in Rust with a custom software renderer"]]></title><description><![CDATA[
<p>I have considered getting a Mac in the past (even a very old Air) to make and, most importantly test, Mac builds, but I never got to it and cross-compiling to Mac seems like a pain, if at all possible. If you have a VM laying around though, it should work.<p>A good thing about the approach is that if it compiles, it should work exactly the same everywhere and with predictable/linear performance, no matter the environment or driver situation.</p>
]]></description><pubDate>Wed, 17 Sep 2025 07:42:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=45272997</link><dc:creator>mvx64</dc:creator><comments>https://news.ycombinator.com/item?id=45272997</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45272997</guid></item></channel></rss>