<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: amjoshuamichael</title><link>https://news.ycombinator.com/user?id=amjoshuamichael</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 19 Apr 2026 09:42:08 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=amjoshuamichael" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by amjoshuamichael in "CSS Zen Garden"]]></title><description><![CDATA[
<p>Unfortunately, no :( I was hoping someone would recognize the book and reply...</p>
]]></description><pubDate>Mon, 28 Apr 2025 12:54:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=43820989</link><dc:creator>amjoshuamichael</dc:creator><comments>https://news.ycombinator.com/item?id=43820989</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43820989</guid></item><item><title><![CDATA[New comment by amjoshuamichael in "CSS Zen Garden"]]></title><description><![CDATA[
<p>I think CSS tools like that appeal to people who learned web development in a kind of ad-hoc way. When I first started, I just wanted to make designs I had in my head.  I kind of went from "header, text, and image on the page" to, "how do I center this?", "how do I change this color?", "how do I space these elements out?" It wasn't long before I had developed a toolkit of CSS ideas, but once you do that, you lose out on a lot of the finer details that make CSS work well. I knew how to work around weird issues using position: absolute and transform, but I wasn't familiar with block formatting contexts, or the intricacies of the box model. When all of your CSS knowledge is just band-aids placed on your other shoddy CSS knowledge, you're working on fumes. At that point, you could imagine the appeal of grabbing a prebuilt toolkit of composable styles that takes away your access a lot of the available CSS footguns.<p>What changed things for me was reading an short online book-style series about learning HTML/CSS from the ground up. It introduced everything from first principles, and had an approach where they explained <i>why</i> things were the way they were. They didn't just give you their "top 10 ways to center a div" and ask you to leave. I read the whole thing in an afternoon and it changed the way I think about web development. For the life of me, I can't remember what the book was called. If anyone's read something similar I'd love a reference, it was a while ago now and I'd still like to reference it. I specifically remember them saying "display: block is like a word document, and display: flex is like how you'd expect things to work," which illuminated a lot for me, not just about the display property, but generally about the way HTML & CSS were designed.</p>
]]></description><pubDate>Sun, 27 Apr 2025 12:33:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=43811483</link><dc:creator>amjoshuamichael</dc:creator><comments>https://news.ycombinator.com/item?id=43811483</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43811483</guid></item><item><title><![CDATA[New comment by amjoshuamichael in "The DDA Algorithm, explained interactively"]]></title><description><![CDATA[
<p>That's a really good way to think about it! (Bonus points for ASCII diagrams.) IIRC, I had some similar visualizations in the article but I cut them. And nice paper, interesting way to solve that problem.</p>
]]></description><pubDate>Sun, 06 Apr 2025 11:18:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=43600592</link><dc:creator>amjoshuamichael</dc:creator><comments>https://news.ycombinator.com/item?id=43600592</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43600592</guid></item><item><title><![CDATA[New comment by amjoshuamichael in "The DDA Algorithm, explained interactively"]]></title><description><![CDATA[
<p>JavaScript! It's not perfect, but it's the easiest language to run in the browser :)</p>
]]></description><pubDate>Sat, 05 Apr 2025 10:06:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=43592268</link><dc:creator>amjoshuamichael</dc:creator><comments>https://news.ycombinator.com/item?id=43592268</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43592268</guid></item><item><title><![CDATA[New comment by amjoshuamichael in "The DDA Algorithm, explained interactively"]]></title><description><![CDATA[
<p>Haha, I don't know why I didn't think to include a raycast scene, especially since that's what I was using the algorithm for!! Glad you liked it.</p>
]]></description><pubDate>Sat, 05 Apr 2025 09:32:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=43592144</link><dc:creator>amjoshuamichael</dc:creator><comments>https://news.ycombinator.com/item?id=43592144</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43592144</guid></item><item><title><![CDATA[New comment by amjoshuamichael in "The DDA Algorithm, explained interactively"]]></title><description><![CDATA[
<p>Original author here. I've been reading this website for years. Imagine my shock when I saw my own article on the front page! I'm glad people are enjoying it.<p>Quick fact about the way the interactivity is done, all of the code for it is in this blogpost.js file: <a href="https://aaaa.sh/creatures/blogpost.js" rel="nofollow">https://aaaa.sh/creatures/blogpost.js</a>, which is only about 100 lines long. Each block has a list of scripts that it pulls from like so:<p><div class="code-example" scripts="grid-sm 2d-vector-gfx-lib draw-grid full-algo-intro feather-canvas-edges"></div><p>and then there's a set of script tags with those ids. I figured it was a nice solution!</p>
]]></description><pubDate>Sat, 05 Apr 2025 06:26:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=43591340</link><dc:creator>amjoshuamichael</dc:creator><comments>https://news.ycombinator.com/item?id=43591340</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43591340</guid></item><item><title><![CDATA[New comment by amjoshuamichael in "Stupid Smart Pointers in C"]]></title><description><![CDATA[
<p>My argument is that using these non-standard extensions to do important things like memory management in a C library is malpractice—it effectively locks down the library to specific C compilers. I'm sure that's fine if you're writing to clang specifically, but at that point, you can just write C++. libfreetype & stb_* are used and continue to be used <i>because</i> they can be relied on to be portable, and using compiler-specific extensions (without ifdefs) defeats that. If I relied on a clang-specific `defer`, I'm preventing my library from possibly being compiled via a future C compiler, let alone the compilers that exist now. To me, that's the point of writing C instead of C++ for a library (unless you're just a fan of the simplicity, which is more of an ideological, opinion-based reason).</p>
]]></description><pubDate>Mon, 17 Mar 2025 15:57:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=43389886</link><dc:creator>amjoshuamichael</dc:creator><comments>https://news.ycombinator.com/item?id=43389886</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43389886</guid></item><item><title><![CDATA[New comment by amjoshuamichael in "Stupid Smart Pointers in C"]]></title><description><![CDATA[
<p>For me, the point of writing something in C is portability. There were C compilers 30 years ago, there are C compilers now, and there will almost certainly be C compilers 30 years from now. If I want to write a good, portable library that's going to be useful for a long time, I'll do it in C. This is, at least, the standard in many gamedev circles (see: libsdl, libfreetype, the stb_* libraries). Under that expectation, I write to a standard, not a compiler.</p>
]]></description><pubDate>Mon, 17 Mar 2025 13:25:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=43388356</link><dc:creator>amjoshuamichael</dc:creator><comments>https://news.ycombinator.com/item?id=43388356</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43388356</guid></item><item><title><![CDATA[New comment by amjoshuamichael in "Zig's dot star syntax (value.*)"]]></title><description><![CDATA[
<p>My understanding is that the only qualifier for something on hackernews is that it has to be "deeply interesting":<p><a href="https://news.ycombinator.com/newswelcome.html">https://news.ycombinator.com/newswelcome.html</a><p>Deeply interesting tech, or otherwise.</p>
]]></description><pubDate>Sun, 09 Mar 2025 19:25:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=43312719</link><dc:creator>amjoshuamichael</dc:creator><comments>https://news.ycombinator.com/item?id=43312719</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43312719</guid></item><item><title><![CDATA[New comment by amjoshuamichael in "Zig's dot star syntax (value.*)"]]></title><description><![CDATA[
<p>Maybe I'm wrong and this is new to a lot of people! I have a limited perspective based on my programming journey, which winds mostly through gamedev, graphics programming, and DSP, both (typically) low level domains. But I think if the title if the article were more accurate, (e.g. "What are pointers?"), my reaction would be more clear. I'm also kinda taken aback by the "old grey beard" comment. Look at all the kids using Rust, Zig, even C and tell me that this is obscure knowledge.<p>When I took my first programming class at RIT, visualizing the stack, variables, and pointers was one of the first classes we had. It's one of those beginner diagrams that I feel like everyone is familiar with. But I can understand that there are programming domains with equivalent complexity which don't require that base knowledge. I apologize if I came off as elitist.</p>
]]></description><pubDate>Sun, 09 Mar 2025 17:49:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=43311695</link><dc:creator>amjoshuamichael</dc:creator><comments>https://news.ycombinator.com/item?id=43311695</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43311695</guid></item><item><title><![CDATA[New comment by amjoshuamichael in "Zig's dot star syntax (value.*)"]]></title><description><![CDATA[
<p>Absolutely, like I said, there's no problem with what this person is doing or the way that they're exploring computers, I'm just confused as to why it's being posted here.</p>
]]></description><pubDate>Sat, 08 Mar 2025 23:17:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=43304502</link><dc:creator>amjoshuamichael</dc:creator><comments>https://news.ycombinator.com/item?id=43304502</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43304502</guid></item><item><title><![CDATA[New comment by amjoshuamichael in "Zig's dot star syntax (value.*)"]]></title><description><![CDATA[
<p>Yeah I found this article super weird. Explaining pointers & dereferencing is reasonable, but doing it in the context of Zig specifically, like Zig is the first language to feature dereferencing, is odd. Especially since pointers are such a fundamental part of low-level (really, any) programming. Also not sure why it's posted here?<p>Edit: Going through this author's website, it seems like a lot of their posts are about rediscovering low-level programming concepts through Zig. Like this article, where they discover you can't compare strings directly, and you have to use memcmp:<p><a href="https://www.openmymind.net/Switching-On-Strings-In-Zig/" rel="nofollow">https://www.openmymind.net/Switching-On-Strings-In-Zig/</a><p>They claim that they blog because they "find that [they] retain things better when I write about them." No problem with that. Just a little odd to see on the hn front page, I suppose.</p>
]]></description><pubDate>Sat, 08 Mar 2025 22:36:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=43304214</link><dc:creator>amjoshuamichael</dc:creator><comments>https://news.ycombinator.com/item?id=43304214</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43304214</guid></item><item><title><![CDATA[New comment by amjoshuamichael in "Ask HN: What less-popular systems programming language are you using?"]]></title><description><![CDATA[
<p>What do you mean by "motivational?" Are you talking about how the creator is against adding new features to the language? I actually think that's perfectly fine. One of my favorite things about Odin is the simplicity; the entire language and all of its rules can be understood by reading the Odin overview document. I'm actually thrilled to have a creator that doesn't want to bloat the language.</p>
]]></description><pubDate>Tue, 04 Mar 2025 15:01:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=43255534</link><dc:creator>amjoshuamichael</dc:creator><comments>https://news.ycombinator.com/item?id=43255534</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43255534</guid></item><item><title><![CDATA[New comment by amjoshuamichael in "Show HN: Tramway SDK – An unholy union between Half-Life and Morrowind engines"]]></title><description><![CDATA[
<p>Fair, though when I say "quality decline" I'm mostly talking about extraneous useless features and overly complicated node-based architectures that require GUIs. There are simpler ways to do all of this stuff. This engine, Tramway, is proof of that. Godot sits somewhere in the middle, I've used it a little but I don't know enough about it to say whether it's overly complex or not.<p>You are correct: I definitely agree that not all gamedevs should be making stuff from scratch, but I also think that Unity is a little <i>too</i> much. There's a good middle ground somewhere slightly above raylib.<p>My argument is that the promotion of engines that live near this middle ground is blocked by education: people who want to be able to sell long courses to the people who look up "how to make a video game."</p>
]]></description><pubDate>Wed, 08 Jan 2025 05:48:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=42631359</link><dc:creator>amjoshuamichael</dc:creator><comments>https://news.ycombinator.com/item?id=42631359</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42631359</guid></item><item><title><![CDATA[New comment by amjoshuamichael in "Show HN: Tramway SDK – An unholy union between Half-Life and Morrowind engines"]]></title><description><![CDATA[
<p>I don't think that the developers of Slay The Spire were taught by complexity loving professors, no. But education does more than influence the people at universities. Education informs norms, traditions, and styles that permeate through industries. An example from outside tech: the music notation app Finale found a strangle hold on the education market, and now it's one of the standards for notation, despite being the worst option (source: have you tried Finale?).<p>I've never played the game, but my understanding is that Slay the Spire largely impresses on a design and artistic front, not a technical one. Its engine requirements were not based on feature set or code quality, but on what developers knew. So they probably picked Unity because it was ubiquitous. Education <i>starts</i> the problem, and then devs who need something common they care hire for continue the problem. I don't blame devs for this, it's the right choice to make and obviously Slay the Spire is great, but I am saying that this is a force that drives down the quality of game engines.</p>
]]></description><pubDate>Wed, 08 Jan 2025 03:56:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=42630738</link><dc:creator>amjoshuamichael</dc:creator><comments>https://news.ycombinator.com/item?id=42630738</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42630738</guid></item><item><title><![CDATA[New comment by amjoshuamichael in "Show HN: Tramway SDK – An unholy union between Half-Life and Morrowind engines"]]></title><description><![CDATA[
<p>Oh, absolutely. I maintain the engine for my video game and it's ultra-minimal tailored to my needs. That leads to better performance, and a much slimmer build size. (currently sitting at ~900KB for the optimized build of a nontrivial game, assets bundled separately). It's also a better development experience, imo.<p>My argument was mainly about these more generalized engines, like raylib, 'Tramway', or Source.</p>
]]></description><pubDate>Tue, 07 Jan 2025 22:37:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=42628530</link><dc:creator>amjoshuamichael</dc:creator><comments>https://news.ycombinator.com/item?id=42628530</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42628530</guid></item><item><title><![CDATA[New comment by amjoshuamichael in "Show HN: Interactive Explainer for DDA Line Drawing Algorithm"]]></title><description><![CDATA[
<p>It's all done using the HTML canvas API.</p>
]]></description><pubDate>Tue, 07 Jan 2025 21:10:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=42627521</link><dc:creator>amjoshuamichael</dc:creator><comments>https://news.ycombinator.com/item?id=42627521</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42627521</guid></item><item><title><![CDATA[New comment by amjoshuamichael in "Show HN: Tramway SDK – An unholy union between Half-Life and Morrowind engines"]]></title><description><![CDATA[
<p>I'm starting to believe there is an external force that drives down the quality of game engines over time. In most tech, the things that catch on are the things that 
are the easiest to develop curriculum for. The shape of a node-based editor like Unity is uniquely suited to explaining over a number of classes. (Source: I had to learn Unity at my University) On the other hand, an engine like raylib can be grokked in an afternoon, so a university-level raylib class wouldn't work. So you have all these amateur game developers and programmers coming out of diploma mills, and all they know is Unity/Unreal, so companies hire Unity/Unreal, so universities teach it, etc. See also: Java being popular. Then of course, all these companies have wildly different needs for their Unity projects, so Unity, being a for-profit company that serves its customers and not a single disgruntled programmer, has to conform their engine. So you end up with 'turbobloat.' (amazing term, btw)<p>The Half-Life and Morrowind engines are in a unique situation where they're put together by enthusiastic programmers who are paid to develop stuff they think is cool. You end up with minimal engines and great tech, suited to the needs of professional game developers.<p>This seems like something that sits in between a raylib and a Unity. I haven't used it, but I worry that it's doesn't do enough to appeal to amateur programmers, but it does too much to appeal to the kind of programmer who wants a smaller engine. I could be very wrong though, I hope to be very wrong. Seems like the performance here is very nice and it's very well put together. There's definitely a wave of developers coming out frustrated from Unity right now. As the nostalgia cycle moves to the 2000's, there's a very real demand to play and create games that are no more graphically complex than Half-Life 2.<p>Anyway, great project. Great web design. Documentation is written in a nice voice.</p>
]]></description><pubDate>Tue, 07 Jan 2025 20:50:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=42627301</link><dc:creator>amjoshuamichael</dc:creator><comments>https://news.ycombinator.com/item?id=42627301</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42627301</guid></item><item><title><![CDATA[Show HN: Interactive Explainer for DDA Line Drawing Algorithm]]></title><description><![CDATA[
<p>I never fully understood the DDA algorithm for drawing lines on pixel / voxel grids. I like to learn by teaching, so I figured it out, and wrote a blog post explaining it. Also, all the code examples in the blogpost are interactive and modifiable.<p>I often see explainers for programming algorithms or concepts and want to boot up a JS scratchpad to mess around with the ideas, so I can get a better feel for the material. In this format, the scratchpad is built-in and ready to go.<p>I figured the HN crowd would appreciate the format & and the content.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=42594955">https://news.ycombinator.com/item?id=42594955</a></p>
<p>Points: 2</p>
<p># Comments: 2</p>
]]></description><pubDate>Sat, 04 Jan 2025 14:45:12 +0000</pubDate><link>https://aaaa.sh/creatures/dda-algorithm-interactive/</link><dc:creator>amjoshuamichael</dc:creator><comments>https://news.ycombinator.com/item?id=42594955</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42594955</guid></item><item><title><![CDATA[New comment by amjoshuamichael in "Pigment Mixing into Digital Painting"]]></title><description><![CDATA[
<p>Personally, I don't care about the library, and just want the pure math implementation for shaders and such. For that, they have the algorithm available here in GLSL, vec3 mixbox_lerp is the function you want:<p><a href="https://github.com/scrtwpns/mixbox/blob/master/shaders/mixbox.glsl">https://github.com/scrtwpns/mixbox/blob/master/shaders/mixbo...</a><p>I don't have time to whip up a demo, but it seems like it's pretty well optimized and it looks really nice in the examples. Great work from these folks.</p>
]]></description><pubDate>Sun, 29 Dec 2024 23:55:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=42544775</link><dc:creator>amjoshuamichael</dc:creator><comments>https://news.ycombinator.com/item?id=42544775</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42544775</guid></item></channel></rss>