<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: jkcxn</title><link>https://news.ycombinator.com/user?id=jkcxn</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 13 Jun 2026 13:29:34 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=jkcxn" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by jkcxn in "Why do some gamers invert their controls?"]]></title><description><![CDATA[
<p>You can switch between the two easily by imagining a lever on the back of the characters head vs front of their head - press up to push the lever higher for the back vs lower for the front. Same goes for planes etc</p>
]]></description><pubDate>Sat, 20 Sep 2025 22:19:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=45318125</link><dc:creator>jkcxn</dc:creator><comments>https://news.ycombinator.com/item?id=45318125</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45318125</guid></item><item><title><![CDATA[New comment by jkcxn in "When Is WebAssembly Going to Get DOM Support?"]]></title><description><![CDATA[
<p>That's like saying WASM doesn't have a direct way to allocate memory or print to the console. Of course it doesn't, it doesn't have access to anything, that's the whole point.</p>
]]></description><pubDate>Wed, 23 Jul 2025 16:33:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=44661088</link><dc:creator>jkcxn</dc:creator><comments>https://news.ycombinator.com/item?id=44661088</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44661088</guid></item><item><title><![CDATA[New comment by jkcxn in "Asynchrony Is Not Concurrency"]]></title><description><![CDATA[
<p>Not the OP, but in formal definitions like Communicating Sequential Processes, concurrency means the possibility for tasks to run out of order and still be correct, as long as other synchronisation events happen</p>
]]></description><pubDate>Fri, 18 Jul 2025 20:34:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=44609532</link><dc:creator>jkcxn</dc:creator><comments>https://news.ycombinator.com/item?id=44609532</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44609532</guid></item><item><title><![CDATA[New comment by jkcxn in "Show HN: Voiden – a free, offline, Git-native API Client"]]></title><description><![CDATA[
<p>This seems like a really good idea. I like that it's just markdown files and how seemless it is with an existing project. I have a few minor suggestions<p>1. I would really like a way to run the endpoint by clicking something in addition to command+enter (it wasn't obvious that I could open the sidebar and then click play but I see that now)<p>2. It would be good to include the evaluated request body and headers in the result sidebar<p>3. Duplicate file in the file tree context menu - I saw it in the tab context menu but that seems unintuitive<p>4. Maybe allow the user to set variables inside the markdown that can be imported to other files, for example a customerId variable that different requests could use which isn't part of the environment<p>5. Dragging text around appears like it will be moved but when releasing the mouse nothing happens<p>And finally 1 question I have: is this using an underlying text editor? It looks pretty robust but it doesn't look like VSCode, maybe something else? I am wondering if it's available to use for my own project</p>
]]></description><pubDate>Wed, 28 May 2025 19:29:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=44119795</link><dc:creator>jkcxn</dc:creator><comments>https://news.ycombinator.com/item?id=44119795</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44119795</guid></item><item><title><![CDATA[New comment by jkcxn in "WebMonkeys: parallel GPU programming in JavaScript"]]></title><description><![CDATA[
<p>You can quite easily make bindings for raylib/sokol-gpu/bgfx from Bun</p>
]]></description><pubDate>Wed, 07 May 2025 11:00:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=43914207</link><dc:creator>jkcxn</dc:creator><comments>https://news.ycombinator.com/item?id=43914207</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43914207</guid></item><item><title><![CDATA[New comment by jkcxn in "The lost language extensions of MetaWare's High C compiler (2023)"]]></title><description><![CDATA[
<p>Do you know how the break/return would get compiled down to? Would the yield function need to be transformed to return a status code and checked at the callsite?</p>
]]></description><pubDate>Wed, 25 Sep 2024 16:55:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=41649404</link><dc:creator>jkcxn</dc:creator><comments>https://news.ycombinator.com/item?id=41649404</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41649404</guid></item><item><title><![CDATA[New comment by jkcxn in "Ask HN: What are you working on (August 2024)?"]]></title><description><![CDATA[
<p>Yes sounds like the same thing! I also couldn't find anyone else doing it. Sounds super interesting what you're doing so I'd love to read your blog post when it's done if you want to drop me a message/email.<p>My project was using 2D SDFs for UI which meant you could use a bunch of primitive shapes and union/difference between them, and also add outlines, shadows, glows etc. This means that if you tile up the screen and use a union between two rectangles, only the tile with the overlap needs to calculate the union. It's a little more complicated in 3D with frustum culling.<p>I was doing it in webgl which doesn't have storage buffers and so I had to use uniforms to pass the data which is a huge limitation. Apparently webgpu could be better so I will try to figure that out one day. But it is early prototype so no links or anything yet.</p>
]]></description><pubDate>Mon, 26 Aug 2024 18:26:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=41360129</link><dc:creator>jkcxn</dc:creator><comments>https://news.ycombinator.com/item?id=41360129</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41360129</guid></item><item><title><![CDATA[New comment by jkcxn in "Ask HN: What are you working on (August 2024)?"]]></title><description><![CDATA[
<p>I've done this for a project where the SDF functions are basically instructions, and you can build up instrictions on the CPU to send to the shader. and then the fragment shader runs them like a mini bytecode interpreter. You can tile up the screen to avoid having too many instructions per fragment. Kinda wild idea and performance may vary depend on what you're doing</p>
]]></description><pubDate>Sun, 25 Aug 2024 16:51:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=41348840</link><dc:creator>jkcxn</dc:creator><comments>https://news.ycombinator.com/item?id=41348840</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41348840</guid></item><item><title><![CDATA[New comment by jkcxn in "Generating Mazes"]]></title><description><![CDATA[
<p>I had fun generating isometric mazes<p><a href="https://www.reddit.com/r/proceduralgeneration/comments/kxau1x/3d_maze/" rel="nofollow">https://www.reddit.com/r/proceduralgeneration/comments/kxau1...</a></p>
]]></description><pubDate>Sun, 25 Aug 2024 14:28:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=41347538</link><dc:creator>jkcxn</dc:creator><comments>https://news.ycombinator.com/item?id=41347538</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41347538</guid></item><item><title><![CDATA[New comment by jkcxn in "Tracing garbage collection for arenas"]]></title><description><![CDATA[
<p>How do you move memory and have all the pointers update to the new position? I didn't understand that part.</p>
]]></description><pubDate>Wed, 26 Jun 2024 19:46:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=40803838</link><dc:creator>jkcxn</dc:creator><comments>https://news.ycombinator.com/item?id=40803838</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40803838</guid></item><item><title><![CDATA[New comment by jkcxn in "Show HN: I made a Pinterest clone using SigLIP image embeddings"]]></title><description><![CDATA[
<p>It’s called a masonry grid. Images retain their aspect ratio so they don’t need to be cropped. You can kind of simulate it with css but there’s proposals to add a proper masonry layout to css</p>
]]></description><pubDate>Fri, 16 Feb 2024 13:36:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=39396794</link><dc:creator>jkcxn</dc:creator><comments>https://news.ycombinator.com/item?id=39396794</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39396794</guid></item><item><title><![CDATA[New comment by jkcxn in "CSS Is Logical"]]></title><description><![CDATA[
<p>It's no different except now you've set parent's height to 100% of <i>its</i> parent, which is the html tag. But the html tag is height: auto so there is a circular dependency. if you put html { height: 100% }, or set parent's height to an explicit height then its fine<p>This is the reason for the perceived difference between width and height. The rules are the same but the box's default width and height are different</p>
]]></description><pubDate>Sun, 11 Feb 2024 15:15:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=39335526</link><dc:creator>jkcxn</dc:creator><comments>https://news.ycombinator.com/item?id=39335526</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39335526</guid></item><item><title><![CDATA[New comment by jkcxn in "CSS Is Logical"]]></title><description><![CDATA[
<p>He says "width looks up the tree while height looks down the tree."<p>And "Width Looks Outward, Height Looks Inward"<p>And - The key insight here is: height: 100% means “I am as tall as all the things inside of me”, not “as tall as all the things I am inside of.”<p>But this is wrong and 100% does mean as tall as the things I am inside of. And this is the same as how width works.<p>The spec even says "Percentages specify sizing of a box with respect to the box’s containing block."<p>Here's a quick example<p><a href="https://jsfiddle.net/znqtue21/" rel="nofollow">https://jsfiddle.net/znqtue21/</a><p>There is a quirk where a box's size is a percentage of the parent block, but the parent block's size is calculated from its child (there would be a circular dependency), in which case there are special rules. But even these are the same for width and height. Usually you can just put an explicit height on the parent. <a href="https://drafts.csswg.org/css-sizing/#cyclic-percentage-contribution" rel="nofollow">https://drafts.csswg.org/css-sizing/#cyclic-percentage-contr...</a></p>
]]></description><pubDate>Sun, 11 Feb 2024 14:14:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=39335115</link><dc:creator>jkcxn</dc:creator><comments>https://news.ycombinator.com/item?id=39335115</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39335115</guid></item><item><title><![CDATA[New comment by jkcxn in "Visual Node Graph with ImGui"]]></title><description><![CDATA[
<p>It’s not syntax help thats useful about visual programming it’s the 2-way communication between the programmer and the running program, and also being able to refer to other parts of a program spatially rather than by a name.<p>Most kinds of software don’t need these things but if you’re writing code that generates graphics or audio signals then you do, because you get to manipulate your program and see/hear effects in real-time, and also seeing how different parts of your program connects together is more important than giving names to them (where there may not be a useful name you can give them anyway)<p>Theoretically you might be able achieve these things with only a textual representation and it could be best of both worlds</p>
]]></description><pubDate>Fri, 29 Sep 2023 16:30:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=37706586</link><dc:creator>jkcxn</dc:creator><comments>https://news.ycombinator.com/item?id=37706586</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37706586</guid></item><item><title><![CDATA[New comment by jkcxn in "WebGPU Fundamentals"]]></title><description><![CDATA[
<p>If you have a couple of different sizes of texts you can render out each character into a sprite map and render a quad per character which is probably the fastest and works for most 2D UIs. You can prerender ahead of time or have some runtime code that renders the characters with a given font using the 2D canvas api. You will need also need to store the characters sizes somewhere unless it’s a monospace font<p>If you need to scale the text arbitrarily or render it in 3D space you can look at multi channel signed distance fields (MSDF) which also renders out each character but encodes some extra data which makes them scalable. It has pretty good results</p>
]]></description><pubDate>Sat, 15 Apr 2023 12:54:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=35580213</link><dc:creator>jkcxn</dc:creator><comments>https://news.ycombinator.com/item?id=35580213</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35580213</guid></item><item><title><![CDATA[New comment by jkcxn in "Tree views in CSS"]]></title><description><![CDATA[
<p>This one works with variable height, you can pull some css from it <a href="https://codepen.io/khoama/pen/AoPeMM" rel="nofollow">https://codepen.io/khoama/pen/AoPeMM</a></p>
]]></description><pubDate>Sat, 19 Nov 2022 14:59:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=33670669</link><dc:creator>jkcxn</dc:creator><comments>https://news.ycombinator.com/item?id=33670669</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33670669</guid></item><item><title><![CDATA[New comment by jkcxn in "Confess your love with zero-knowledge"]]></title><description><![CDATA[
<p>That's mad because the useMemo clearly has to do an equality check to see if it changed anyway...</p>
]]></description><pubDate>Fri, 03 Jun 2022 19:31:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=31612628</link><dc:creator>jkcxn</dc:creator><comments>https://news.ycombinator.com/item?id=31612628</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31612628</guid></item><item><title><![CDATA[New comment by jkcxn in "Advice on JSX Conditionals"]]></title><description><![CDATA[
<p>Yes Dart with Flutter and swift UI both had to add language features just to support if and loop expressions. But people writing immediate mode guis have been doing the exact same thing using standard language features for years. There's no reason you can't mix React-ive style components with an immediate style API. I do this in a GUI library I've written in D. The downside is you get slightly less type safety, but I'm happy to pay that cost</p>
]]></description><pubDate>Wed, 09 Mar 2022 17:21:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=30617244</link><dc:creator>jkcxn</dc:creator><comments>https://news.ycombinator.com/item?id=30617244</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30617244</guid></item><item><title><![CDATA[New comment by jkcxn in "SPAs Were a Mistake"]]></title><description><![CDATA[
<p>Yes this is exactly right. What I’ve done in the past is use Django to return HTML with JSX mixed in, and have a super lightweight SPA frontend that just hydrates the react components on each load. You can also use form state to communicate back and forth with the server, where sending a response doesn’t refresh the entire page, just a react render diff. 
With this you get the best of both worlds where your backend can do the heavy lifting where everything it needs to decide on the view is all in one place, and your frontend just comprises of really really generic JS components.<p>I have a library I’ve been playing around with for 2 years now, I should package it up</p>
]]></description><pubDate>Wed, 02 Mar 2022 21:16:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=30533278</link><dc:creator>jkcxn</dc:creator><comments>https://news.ycombinator.com/item?id=30533278</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30533278</guid></item><item><title><![CDATA[New comment by jkcxn in "A pipe operator for JavaScript: introduction and use cases"]]></title><description><![CDATA[
<p>D’s way is far superior because as the caller you don’t have to worry about whether you’re calling a method or an external function, it looks the same. Not sure it would be possible to tack this onto a dynamic language like JavaScript though</p>
]]></description><pubDate>Sat, 29 Jan 2022 14:41:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=30126619</link><dc:creator>jkcxn</dc:creator><comments>https://news.ycombinator.com/item?id=30126619</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30126619</guid></item></channel></rss>