<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: Lichtso</title><link>https://news.ycombinator.com/user?id=Lichtso</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 08 Sep 2026 18:37:54 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=Lichtso" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by Lichtso in "Mojo is now open source"]]></title><description><![CDATA[
<p>Technically soruce available now with the promise of accepting contributions (thus becoming fully open source) early next year. But since it is an Apache 2 license (like the rest of the LLVM project) you are already allowed to fork and contribute to your own fork right now, just no upstreaming.<p>For many the closed source nature of the compiler was a knock-out criterion. We will see if Mojo can gain traction now or if it has missed its window of opportunity.</p>
]]></description><pubDate>Tue, 18 Aug 2026 16:49:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=49348536</link><dc:creator>Lichtso</dc:creator><comments>https://news.ycombinator.com/item?id=49348536</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49348536</guid></item><item><title><![CDATA[New comment by Lichtso in "Super El Niño Keeps Growing as New Forecasts Reach Record Territory Ahead Winter"]]></title><description><![CDATA[
<p>People often forget that architecture in (central and northern) Europe is build under the assumption that the climate has more cold extremes than hot extremes. Thus, buildings were constructed to both retain and collect as much heat as possible to save on heating in the winter. Now, if you just slap an AC onto that it will have to fight all of the passive heat collection. In other words, you would have to also close off all south facing and roof windows for it to work.<p>Furthermore, the way the last mile distribution of power works is often underground (with the cables directly in the sand, no hose or tube around it) which makes it expensive to upgrade to handle a much higher peak consumption. Only lucky thing is that you mostly need AC when the sun is shining, thus local production via photovoltaic cells is a good solution that sidesteps the power grid problem.</p>
]]></description><pubDate>Sun, 16 Aug 2026 12:25:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=49319405</link><dc:creator>Lichtso</dc:creator><comments>https://news.ycombinator.com/item?id=49319405</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49319405</guid></item><item><title><![CDATA[New comment by Lichtso in "Geometric Reasoning"]]></title><description><![CDATA[
<p>Audio glitches like the one at 45:15 (<a href="https://youtu.be/4S8I22ybG2c?t=2715" rel="nofollow">https://youtu.be/4S8I22ybG2c?t=2715</a>) make me think even the interview video might be generated.</p>
]]></description><pubDate>Sat, 15 Aug 2026 14:51:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=49311076</link><dc:creator>Lichtso</dc:creator><comments>https://news.ycombinator.com/item?id=49311076</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49311076</guid></item><item><title><![CDATA[New comment by Lichtso in "Wind turbine is being used to produce zero-carbon "green ammonia" fertilizer"]]></title><description><![CDATA[
<p>I am curious what kind of plasma is used, as there are many ways to create plasma under various conditions, with very different efficiencies, selectivity, yield, etc.<p>Among the worst is the Birkeland-Eyde process, hot plasma by electric arcing, like it happens naturally during a thunderstorm. Even microwaving the air is more energy efficient. And amongst the most promising are transient non-equilibirum / cold plasma approaches using ns pulse generators.<p>Edit: So according to this video "Green Lightning" is indeed using the Birkeland-Eyde process. In other words, there is no way they even come close to their energy efficiency and yield claims. <a href="https://youtu.be/8TOnyAwJyvg?si=D9hat_XAfvuAAmpB&t=165" rel="nofollow">https://youtu.be/8TOnyAwJyvg?si=D9hat_XAfvuAAmpB&t=165</a></p>
]]></description><pubDate>Sat, 25 Jul 2026 19:11:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=49050608</link><dc:creator>Lichtso</dc:creator><comments>https://news.ycombinator.com/item?id=49050608</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49050608</guid></item><item><title><![CDATA[New comment by Lichtso in "Seven countries now generate 100% of their electricity from renewable energy"]]></title><description><![CDATA[
<p>> the common usage connotation of “renewable energy “ today is “wind and solar”<p>Hydro, wind and solar. Hydro is often even more important because it runs more steadily than the other two.<p>Geothermal and nuclear are neither fossil nor renewable, they are their own category.</p>
]]></description><pubDate>Sun, 12 Apr 2026 16:58:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=47741917</link><dc:creator>Lichtso</dc:creator><comments>https://news.ycombinator.com/item?id=47741917</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47741917</guid></item><item><title><![CDATA[New comment by Lichtso in "A Decade of Slug"]]></title><description><![CDATA[
<p>> [1] and [2] sound similar to what you are describing. They still involve triangulating the shape, but the triangulation process seems much simpler<p>Yes, they describe one variation of the angle based method to winding numbers by spanning a triangle fan from an arbitrarily chosen pivot point / vertex.<p>> if you want to do distance based anti-aliasing rather than supersampling<p>Particularly when it comes to rendering vector graphics I think of analytic anti-aliasing methods as somewhat cursed and prefer multisampling [0], at least for magnification. For minification mip-mapping remains the go to solution. However, if you only render 2D text on a 2D plane, which is typically overlap free, then these correctness issues don't matter.<p>> I don't see a straightforward way to apply this technique in a pixel shader that includes multiple curves per triangle<p>All modern vector renderers I know of avoid triangle rasterization entirely. Like I said, they typically do tiles (screen space partitioned into quads) in a compute shader instead of using the fixed functionality with a fragment / pixel shader. The reason is that nowadays compute is cheap and memory bandwidth is the bottle neck. Thus, it makes sense to load a bunch of overlapping geometry from global memory into workgroup shared memory, render all of it down to pixels in workgroup shared memory, and then only write these pixels back to the framebuffer in global memory.<p>> I feel like any attempt to do that will approach the complexity of Slug<p>A highly optimized implementation might very well, yes. Yet, handling the many cases of intersections of the path and the scanline won't be contributing to the complexity, which is what started this discussion.<p>> I would love to read more detailed information on that if you have it.<p>I implemented the outdated stencil buffer + triangle fan + implicit curves approach [1] if you want to take a look under the hood. The library is quite complex because it also handles the notoriously hard rational cubic bezier curves analytically, which Slug does not even attempt and just approximates. But the integral quadratic bezier curves are very simple and that is what is comparable to the scope Slug covers. It is just a few lines of code for the vertex shader [2], the fragment shader [3] and the vertex buffer setup [4].<p>Edit: You can even spin loop & blinn into a scanline method / hybrid: They give you the side of the curve your pixel is on [5], which is typically also the thing scanline methods are interested in. They compute the exact intersection location relative to the pixel, only to throw away most of the information and only keep the sign (side the pixel is on). So, that might be the easiest fragment shader vector renderer possible. Put it together in a shader toy [6] a while back.<p>[0]: <a href="https://news.ycombinator.com/item?id=46473247#46530503">https://news.ycombinator.com/item?id=46473247#46530503</a>
[1]: <a href="https://github.com/Lichtso/contrast_renderer" rel="nofollow">https://github.com/Lichtso/contrast_renderer</a>
[2]: <a href="https://github.com/Lichtso/contrast_renderer/blob/main/src/shaders.wgsl#L72" rel="nofollow">https://github.com/Lichtso/contrast_renderer/blob/main/src/s...</a>
[3]: <a href="https://github.com/Lichtso/contrast_renderer/blob/main/src/shaders.wgsl#L241" rel="nofollow">https://github.com/Lichtso/contrast_renderer/blob/main/src/s...</a>
[4]: <a href="https://github.com/Lichtso/contrast_renderer/blob/main/src/fill.rs#L285-L296" rel="nofollow">https://github.com/Lichtso/contrast_renderer/blob/main/src/f...</a>
[5]: <a href="https://news.ycombinator.com/item?id=45626037#45627274">https://news.ycombinator.com/item?id=45626037#45627274</a>
[6]: <a href="https://www.shadertoy.com/view/fsXcDj" rel="nofollow">https://www.shadertoy.com/view/fsXcDj</a></p>
]]></description><pubDate>Thu, 19 Mar 2026 00:37:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=47433240</link><dc:creator>Lichtso</dc:creator><comments>https://news.ycombinator.com/item?id=47433240</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47433240</guid></item><item><title><![CDATA[New comment by Lichtso in "A Decade of Slug"]]></title><description><![CDATA[
<p>> It avoids the issue of a winding number by assuming there's only 1 bezier curve per triangle<p>The original paper did assume no overlap yes. But that is not how anybody would implement it. For a long time one would use the stencil buffer with different operations depending on the front-face / back-face (this is where the paths rotation around the sample comes in and what makes this an angle based approach).<p>> which requires a complicated triangulation step. It can produce some nasty geometry in more complex cases.<p>Again, not how anybody would implement this. You can just stream the quadratic bezier curves unprocessed into the vertex shader, literally the simplest thing conceivable.<p>> With Slug, you can use only 1 quad per glyph if you want.<p>Nowadays one would probably implement loop & blinn in a tiled compute shader too (instead of using stencil buffers) to reduce memory bandwidth and over draw. That way you also get one quad per glaph, but without any of the geometry special casing that Slug does.<p>> It's the breakdown into different cases that _solves_ those issues, whereas your statement makes it sound like slug has _both_ the case complexity and the precision issues.<p>Correct, might have worded that badly. Still remains a trade off in a) which b) does not have.</p>
]]></description><pubDate>Wed, 18 Mar 2026 18:35:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=47429594</link><dc:creator>Lichtso</dc:creator><comments>https://news.ycombinator.com/item?id=47429594</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47429594</guid></item><item><title><![CDATA[New comment by Lichtso in "A Decade of Slug"]]></title><description><![CDATA[
<p>I think it is limited to integral quadratic bezier curves, which is sufficient for text rendering. But general purpose vector graphics almost certainly want rational cubic bezier curves too.</p>
]]></description><pubDate>Wed, 18 Mar 2026 10:12:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=47423711</link><dc:creator>Lichtso</dc:creator><comments>https://news.ycombinator.com/item?id=47423711</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47423711</guid></item><item><title><![CDATA[New comment by Lichtso in "A Decade of Slug"]]></title><description><![CDATA[
<p>There are two ways to get winding numbers and then decide on filled or empty by some rule like non-zero or even-odd:<p>a) The winding number of a point is the number of intersections of a scanline and a closed path.<p>b) The winding number around a point is the total angle subtended by the path at that point.<p>Slug uses approach a) and that comes with a lot of edge cases (see chart in the post) and numerical precision issues. The approach by loop & blinn uses b) and is thus simpler and more robust. Likewise the patent on that one expired too: <a href="https://news.ycombinator.com/item?id=47416736#47420450">https://news.ycombinator.com/item?id=47416736#47420450</a></p>
]]></description><pubDate>Wed, 18 Mar 2026 10:03:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=47423665</link><dc:creator>Lichtso</dc:creator><comments>https://news.ycombinator.com/item?id=47423665</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47423665</guid></item><item><title><![CDATA[New comment by Lichtso in "Voxile: A ray-traced game made in its own engine and programming language"]]></title><description><![CDATA[
<p>John Lin used to work on such an engine where all voxels stay axis and grid aligned, even in animations:<p><a href="https://x.com/ProgrammerLin/status/1342786223811698688" rel="nofollow">https://x.com/ProgrammerLin/status/1342786223811698688</a>
<a href="https://voxely.net/blog/" rel="nofollow">https://voxely.net/blog/</a><p>But I think the project was abandoned in 2021.</p>
]]></description><pubDate>Wed, 04 Mar 2026 09:33:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=47245143</link><dc:creator>Lichtso</dc:creator><comments>https://news.ycombinator.com/item?id=47245143</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47245143</guid></item><item><title><![CDATA[New comment by Lichtso in "Turn Dependabot off"]]></title><description><![CDATA[
<p>> I Think that DoS needs to stop being considered a vulnerability<p>Strongly disagree. While it might not matter much in some / even many domains, it absolutely can be mission critical. Examples are: Guidance and control systems in vehicles and airplanes, industrial processes which need to run uninterrupted, critical infrastructure and medicine / health care.</p>
]]></description><pubDate>Sat, 21 Feb 2026 00:27:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=47096053</link><dc:creator>Lichtso</dc:creator><comments>https://news.ycombinator.com/item?id=47096053</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47096053</guid></item><item><title><![CDATA[New comment by Lichtso in "Art of Roads in Games"]]></title><description><![CDATA[
<p>Really depends: In some areas it is quite advanced (rendering) and in others it is lacking / underdeveloped (editors / tooling). But there is an incredible amount of progress and also churn in keeping up with that.<p><a href="https://thisweekinbevy.com/" rel="nofollow">https://thisweekinbevy.com/</a>
<a href="https://bevy.org/news/" rel="nofollow">https://bevy.org/news/</a></p>
]]></description><pubDate>Mon, 09 Feb 2026 16:33:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=46947222</link><dc:creator>Lichtso</dc:creator><comments>https://news.ycombinator.com/item?id=46947222</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46947222</guid></item><item><title><![CDATA[New comment by Lichtso in "Art of Roads in Games"]]></title><description><![CDATA[
<p>> The thing is that I myself don't even know what I want to do with it.<p>Embrace the next challenge: Instead of roads on parabolic (Euclidean) geometry, have roads on elliptic (non-Euclidean) geometry, like the surface of a sphere. Plus, on a sphere every line is already a circular arc anyway (no matter if straight or bent, the difference is just the center, radius and normals). Thus, this system of circular arc segments really lends itself to such a space.<p>Little prince style micro planets with their own miniature infrastructure will always have a special place in my heart. Half a year ago I started with laying out the basics <a href="https://github.com/Lichtso/bevy_ellipsoid_billboard" rel="nofollow">https://github.com/Lichtso/bevy_ellipsoid_billboard</a> <a href="https://github.com/Lichtso/bevy_geodesic_grid" rel="nofollow">https://github.com/Lichtso/bevy_geodesic_grid</a> but got distracted by fixing some engine bugs in Bevy along the way. That reminds me I have to update to the newest engine version ...<p>anyway you can find some of the roads on spheres stuff here: <a href="https://github.com/Lichtso/bevy_geodesic_grid/blob/main/src/surface_structures.rs" rel="nofollow">https://github.com/Lichtso/bevy_geodesic_grid/blob/main/src/...</a> it can not only generate the extrusion mesh but also calculate how the mesh overlaps with a geodesic grid of triangular tiles on the surface.</p>
]]></description><pubDate>Mon, 09 Feb 2026 10:17:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=46943631</link><dc:creator>Lichtso</dc:creator><comments>https://news.ycombinator.com/item?id=46943631</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46943631</guid></item><item><title><![CDATA[New comment by Lichtso in "The Universal Pattern Popping Up in Math, Physics and Biology (2013)"]]></title><description><![CDATA[
<p>Another point in case: Life only exists in liquids, not in solids (too much structure) and not in gases (too much chaos).<p>In fact one could argue that this is a definition of an interesting system: It has to strike a balance between being completely ordered (which is boring) and being completely random (which is also boring).</p>
]]></description><pubDate>Tue, 27 Jan 2026 18:12:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=46783909</link><dc:creator>Lichtso</dc:creator><comments>https://news.ycombinator.com/item?id=46783909</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46783909</guid></item><item><title><![CDATA[New comment by Lichtso in "Qwen3-TTS family is now open sourced: Voice design, clone, and generation"]]></title><description><![CDATA[
<p>Yes, using mlx-audio. See <a href="https://news.ycombinator.com/item?id=46726440">https://news.ycombinator.com/item?id=46726440</a></p>
]]></description><pubDate>Fri, 23 Jan 2026 18:13:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=46735711</link><dc:creator>Lichtso</dc:creator><comments>https://news.ycombinator.com/item?id=46735711</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46735711</guid></item><item><title><![CDATA[New comment by Lichtso in "Vector graphics on GPU"]]></title><description><![CDATA[
<p>> but [analytic anti-aliasing (aaa)] also has much better quality than what can be practically achieved with supersampling<p>What this statement is missing is that aaa coverage is immediately resolved, while msaa coverage is resolved later in a separate step with extra data being buffered in between. This is important because msaa is unbiased while aaa is biased towards too much coverage once two paths partially cover the same pixel. In other words aaa becomes incorrect once you draw overlapping or self-intersecting paths.<p>Think about drawing the same path over and over at the same place: aaa will become darker with every iteration, msaa is idempotent and will not change further after the first iteration.<p>Unfortunately, this is a little known fact even in the exquisite circles of 2D vector graphics people, often presenting aaa as the silver bullet, which it is not.</p>
]]></description><pubDate>Wed, 07 Jan 2026 18:34:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=46530503</link><dc:creator>Lichtso</dc:creator><comments>https://news.ycombinator.com/item?id=46530503</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46530503</guid></item><item><title><![CDATA[New comment by Lichtso in "Genergo: Propellantless space-propulsion system"]]></title><description><![CDATA[
<p>For everybody claiming that locomotion without the impulse of a reaction mass is impossible: <a href="https://arxiv.org/abs/2112.09740v2" rel="nofollow">https://arxiv.org/abs/2112.09740v2</a><p>and before anybody only reads "spacetime curvature" and thinks the paper is talking about a warp drive, it is not.<p>Anyway, this Genergo thingy seems to be nonsense IMO, or they would have actually explained how it works.</p>
]]></description><pubDate>Fri, 14 Nov 2025 23:31:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=45933422</link><dc:creator>Lichtso</dc:creator><comments>https://news.ycombinator.com/item?id=45933422</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45933422</guid></item><item><title><![CDATA[New comment by Lichtso in "Game design is simple"]]></title><description><![CDATA[
<p>> I honestly cant't think of any good examples where game mechanics and stories interacted in a way that gave you significant agency while still being fun. I'd love to be given contra-examples though.<p>Rimworld and The Sims. Both are procedural story writers.<p>> I felt railroaded into comically absurd black/white choices<p>I agree: All these AAA titles essentially are movies where you get tons of "agency" in choices which are irrelevant to the story, but the main plot is hard scripted into a few predetermined paths.<p>Until we have full generative AI as game engine the only alternative remains the procedural approach mentioned in the beginning.</p>
]]></description><pubDate>Fri, 07 Nov 2025 11:35:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=45845434</link><dc:creator>Lichtso</dc:creator><comments>https://news.ycombinator.com/item?id=45845434</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45845434</guid></item><item><title><![CDATA[New comment by Lichtso in "Replacement.ai"]]></title><description><![CDATA[
<p>Not yet, I agree, but who is to say they couldn't?<p>Limiting life to cell based biology is a somewhat lousy definition by the only example we know. I prefer the generalized definition in "What is Life?" by Erwin Schrödinger which currently draws the same line (at cellular biology) but could accommodate other forms of life too.</p>
]]></description><pubDate>Sun, 19 Oct 2025 22:13:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=45638516</link><dc:creator>Lichtso</dc:creator><comments>https://news.ycombinator.com/item?id=45638516</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45638516</guid></item><item><title><![CDATA[New comment by Lichtso in "Fast calculation of the distance to cubic Bezier curves on the GPU"]]></title><description><![CDATA[
<p>Yep, stroking is just filling of the space between offset curves (aka. parallel curves), and that "slightly scaled down version of the first" is the "calculate an offset curve explicitly" approach I mentioned.<p>Though it is very unpractical because the offset curve of a cubic bezier curve is not a cubic bezier curve anymore, instead it is an analytic curve of degree 10. Thus, in practice the offset curves for stroking are either approximated by polygons or implicitly sampled from signed distance fields.<p>Raph Levien has a good blog post about it:<p><a href="https://raphlinus.github.io/curves/2022/09/09/parallel-beziers.html" rel="nofollow">https://raphlinus.github.io/curves/2022/09/09/parallel-bezie...</a><p>One more thing: Offset curves are different form classical scaling from a center point in all but the most trivial cases where there exists such a center; namely regular polygons. And cubic bezier curves can be concave, even have a self intersecting loop or form a cusp.</p>
]]></description><pubDate>Sat, 18 Oct 2025 18:19:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=45629345</link><dc:creator>Lichtso</dc:creator><comments>https://news.ycombinator.com/item?id=45629345</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45629345</guid></item></channel></rss>