<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: jsd1982</title><link>https://news.ycombinator.com/user?id=jsd1982</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 28 Apr 2026 14:17:56 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=jsd1982" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by jsd1982 in "Super ZSNES – GPU Powered SNES Emulator"]]></title><description><![CDATA[
<p>It should be possible to have the PPU emulation capture all of the final register state per pixel (or scanline if accuracy isn't paramount) and have the GPU render each pixel using only that state, doing the layer blending, color math, and mode 7 calculations as necessary. Based on MVG's video breaking down the draw commands performed it doesn't look like that's how Super ZSNES have implemented their PPU - it seems to render tile by tile for BGs (and OBJ?) and line by line for mode 7. That'll be a bit inaccurate but it's likely necessary to implement some of their visual enhancement tricks.</p>
]]></description><pubDate>Mon, 27 Apr 2026 19:09:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=47925897</link><dc:creator>jsd1982</dc:creator><comments>https://news.ycombinator.com/item?id=47925897</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47925897</guid></item><item><title><![CDATA[New comment by jsd1982 in "The Met releases high-def 3D scans of 140 famous art objects"]]></title><description><![CDATA[
<p>Very cool! Checking out the Van Gogh painting in the viewer I can just barely see the depth of the brush strokes. Shame you can't look 90 degrees off axis to see the protrusion effect with the bulky outer frame in the way.</p>
]]></description><pubDate>Thu, 12 Mar 2026 22:23:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=47358102</link><dc:creator>jsd1982</dc:creator><comments>https://news.ycombinator.com/item?id=47358102</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47358102</guid></item><item><title><![CDATA[New comment by jsd1982 in "Show HN: Remotely use my guitar tuner"]]></title><description><![CDATA[
<p>Very cool idea, but unfortunately the browser doesn't allow users to select which channel of their audio interface to use as input. So unless you're plugging your guitar into input 1 this doesn't work out. I have my microphone in input 1 and my guitar in input 2.</p>
]]></description><pubDate>Tue, 10 Mar 2026 13:39:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=47323119</link><dc:creator>jsd1982</dc:creator><comments>https://news.ycombinator.com/item?id=47323119</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47323119</guid></item><item><title><![CDATA[Show HN: Circuit Simulating Amp Plugin]]></title><description><![CDATA[
<p>Hey all!<p>I've worked hard on this audio plugin for the last 5 months so I just wanted to share it with everyone here and get some feedback on it.<p>It's a new Mark IIC+ amp sim plugin that takes what I think is a different approach - it's an analog circuit simulator that runs in real-time with no short-cuts or approximations. Check out this demo video I just recorded for more details.<p>Any and all feedback is welcome so long as it is constructive and helpful for improving the plugin. Thanks!</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46340845">https://news.ycombinator.com/item?id=46340845</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 20 Dec 2025 23:50:32 +0000</pubDate><link>https://www.youtube.com/watch?v=GcdyOtO5Id0</link><dc:creator>jsd1982</dc:creator><comments>https://news.ycombinator.com/item?id=46340845</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46340845</guid></item><item><title><![CDATA[New comment by jsd1982 in "Ask HN: What are you working on? (September 2025)"]]></title><description><![CDATA[
<p>Reminds me of John Petrucci's Rock Discipline instructional video where he outlines exactly this technique on how to build up speed.</p>
]]></description><pubDate>Tue, 30 Sep 2025 01:59:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=45421139</link><dc:creator>jsd1982</dc:creator><comments>https://news.ycombinator.com/item?id=45421139</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45421139</guid></item><item><title><![CDATA[New comment by jsd1982 in "Ask HN: What are you working on? (September 2025)"]]></title><description><![CDATA[
<p>I love this idea! Just wanted to send a note of encouragement. Keep at it!</p>
]]></description><pubDate>Tue, 30 Sep 2025 01:58:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=45421134</link><dc:creator>jsd1982</dc:creator><comments>https://news.ycombinator.com/item?id=45421134</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45421134</guid></item><item><title><![CDATA[New comment by jsd1982 in "Ask HN: What are you working on? (September 2025)"]]></title><description><![CDATA[
<p>A real-time circuit-level simulation of the MESA Boogie Mark IIC+ guitar preamplifier.<p><a href="https://www.youtube.com/watch?v=xEy34cuOPaY" rel="nofollow">https://www.youtube.com/watch?v=xEy34cuOPaY</a></p>
]]></description><pubDate>Tue, 30 Sep 2025 01:56:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=45421119</link><dc:creator>jsd1982</dc:creator><comments>https://news.ycombinator.com/item?id=45421119</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45421119</guid></item><item><title><![CDATA[New comment by jsd1982 in "Testing is better than data structures and algorithms"]]></title><description><![CDATA[
<p>Are we assuming that "testing" is limited to only exercising the single-threaded behavior of a function? I'm curious how others approach effective testing of multi-threaded behavior.</p>
]]></description><pubDate>Mon, 22 Sep 2025 22:24:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=45340370</link><dc:creator>jsd1982</dc:creator><comments>https://news.ycombinator.com/item?id=45340370</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45340370</guid></item><item><title><![CDATA[New comment by jsd1982 in "Insufficiently sanitized data allows unauthenticated access to FreePBX Admin"]]></title><description><![CDATA[
<p>Yes, parameterization was implied.</p>
]]></description><pubDate>Wed, 10 Sep 2025 21:01:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=45203649</link><dc:creator>jsd1982</dc:creator><comments>https://news.ycombinator.com/item?id=45203649</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45203649</guid></item><item><title><![CDATA[New comment by jsd1982 in "Insufficiently sanitized data allows unauthenticated access to FreePBX Admin"]]></title><description><![CDATA[
<p>Sanitization of data is such a strange security practice to me. It feels like any sort of vulnerability sensitive to data sanitization just boils down to a failure to properly encode or escape data into a target language that is susceptible to injection attacks e.g. SQL, HTML, javascript. Is there a real-world scenario where data sanitization is required where proper data encoding/escaping is not the better solution?</p>
]]></description><pubDate>Wed, 10 Sep 2025 19:01:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=45202174</link><dc:creator>jsd1982</dc:creator><comments>https://news.ycombinator.com/item?id=45202174</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45202174</guid></item><item><title><![CDATA[New comment by jsd1982 in "Cognitive load is what matters"]]></title><description><![CDATA[
<p>I think cognitive load has a lot more to do with the paradigm that the code is written in than any particular type of author's contribution to the code. For instance, the object-oriented paradigm by design increases cognitive load by encouraging breaking up otherwise straightforward logic into multiple interfaces, classes, and methods.</p>
]]></description><pubDate>Sat, 30 Aug 2025 15:08:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=45075322</link><dc:creator>jsd1982</dc:creator><comments>https://news.ycombinator.com/item?id=45075322</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45075322</guid></item><item><title><![CDATA[New comment by jsd1982 in "How to install TrueNAS on a Raspberry Pi"]]></title><description><![CDATA[
<p>What's the most cost-effective NAS hardware/software combo lately?</p>
]]></description><pubDate>Thu, 28 Aug 2025 18:22:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=45055302</link><dc:creator>jsd1982</dc:creator><comments>https://news.ycombinator.com/item?id=45055302</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45055302</guid></item><item><title><![CDATA[New comment by jsd1982 in "Ask HN: What are you working on? (July 2025)"]]></title><description><![CDATA[
<p>Not sure, don't have any of those. The response feels very natural from my own playing.<p>Here's a little announcement video I put together a week ago for an earlier version:<p><a href="https://m.youtube.com/watch?v=xEy34cuOPaY" rel="nofollow">https://m.youtube.com/watch?v=xEy34cuOPaY</a></p>
]]></description><pubDate>Mon, 28 Jul 2025 15:57:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=44712114</link><dc:creator>jsd1982</dc:creator><comments>https://news.ycombinator.com/item?id=44712114</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44712114</guid></item><item><title><![CDATA[New comment by jsd1982 in "Ask HN: What are you working on? (July 2025)"]]></title><description><![CDATA[
<p>I've built a VST3 plug-in that simulates a Mesa Boogie Mark IIC+ preamp purely from the circuit.<p>The approach doesn't seem popular for professional plug-ins likely because it wasn't viable for real time until modern CPU enhancements became available. Performance scales with frequency of the input which is interesting and seems to be a consequence of using an iterative solver on a system of equations and using the previous sample's state vector as a guess for the current sample.<p>On my MacBook M3 it requires between 50 to 70% of a single core to produce a 2x oversampled output at 48000Hz. This can be scaled back by reducing the solution tolerance bounds and get down near 25% with minimal quality loss.</p>
]]></description><pubDate>Mon, 28 Jul 2025 15:20:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=44711734</link><dc:creator>jsd1982</dc:creator><comments>https://news.ycombinator.com/item?id=44711734</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44711734</guid></item><item><title><![CDATA[New comment by jsd1982 in "LFSR CPU Running Forth"]]></title><description><![CDATA[
<p>Wouldn't this make it somewhat more challenging for assemblers/compilers to emit branch instructions with target PC offsets?<p>For instance, the offset of an instruction two instructions away would be calculated as `lfsr(lfsr(pc))` (off-by-one bugs notwithstanding), right?</p>
]]></description><pubDate>Mon, 02 Jun 2025 16:13:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=44160327</link><dc:creator>jsd1982</dc:creator><comments>https://news.ycombinator.com/item?id=44160327</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44160327</guid></item><item><title><![CDATA[New comment by jsd1982 in "Java Virtual Threads Ate My Memory: A Web Crawler's Tale of Speed vs. Memory"]]></title><description><![CDATA[
<p>The obvious solution to me is to implement streaming/buffered processing of the content while downloading it instead of downloading the entire content into memory to be processed in a single contiguous byte[].<p>Buffered IO would have the CPU processing acting as a natural backpressure mechanism to prevent downloading too much content and also prevent unbounded memory allocation. Each CPU worker only needs to allocate a single small buffer for what it processes and it can refill that same buffer with the next IO request. Your memory usage becomes entirely predictable and will only scale with how many concurrent threads you can actually execute at once.<p>Also, no matter how you artificially rate limit the virtual thread scheduling (e.g. via semaphore), if you still insist on downloading the entire content into memory before starting processing then obviously you cannot process any single piece of content larger than what can fit into available memory at any given time.</p>
]]></description><pubDate>Sat, 31 May 2025 15:04:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=44144733</link><dc:creator>jsd1982</dc:creator><comments>https://news.ycombinator.com/item?id=44144733</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44144733</guid></item><item><title><![CDATA[New comment by jsd1982 in "The Epochalypse Project"]]></title><description><![CDATA[
<p>I fixed a recent Y38 bug in some classic ASP code. The bug was nothing more than a simple `Date() + 5000` computation (adding 5000 days to the current date) as a sort of expiry date applied to something; I don't recall the exact details. VB6 did not take kindly to computing any date value beyond the Y38 max and threw an error. In practice this error ended up denying service to everyone even though the Y38 max date was 14 years in the future. You never know what little bugs like that are lurking in such legacy code.</p>
]]></description><pubDate>Sun, 11 May 2025 23:54:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=43958294</link><dc:creator>jsd1982</dc:creator><comments>https://news.ycombinator.com/item?id=43958294</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43958294</guid></item><item><title><![CDATA[New comment by jsd1982 in "JSLinux"]]></title><description><![CDATA[
<p>I tried to install Visual Basic 6 on it but couldn't get past SSL errors in the installed Firefox version to even download the ISO. Sad.</p>
]]></description><pubDate>Tue, 15 Apr 2025 13:14:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=43692215</link><dc:creator>jsd1982</dc:creator><comments>https://news.ycombinator.com/item?id=43692215</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43692215</guid></item><item><title><![CDATA[New comment by jsd1982 in "Show HN: I made a live multiplayer Minesweeper game"]]></title><description><![CDATA[
<p>On mobile I couldn't make a mistake. Every tap was charitably interpreted as the correct action to take on that square whether it be flagging a mine or revealing empty space / numbers. I clicked every tile and never exploded a mine.</p>
]]></description><pubDate>Tue, 18 Mar 2025 14:49:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=43400139</link><dc:creator>jsd1982</dc:creator><comments>https://news.ycombinator.com/item?id=43400139</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43400139</guid></item><item><title><![CDATA[New comment by jsd1982 in "C Is Not a Low-level Language: Your computer is not a fast PDP-11 (2018)"]]></title><description><![CDATA[
<p>It feels a bit unfair to lay the blame for all of this on C. All other mainstream compilable languages compile to similar abstract machines in a similar fashion to C.</p>
]]></description><pubDate>Fri, 07 Mar 2025 14:34:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=43290486</link><dc:creator>jsd1982</dc:creator><comments>https://news.ycombinator.com/item?id=43290486</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43290486</guid></item></channel></rss>