<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: dherls</title><link>https://news.ycombinator.com/user?id=dherls</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 02 May 2026 05:07:36 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=dherls" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by dherls in "Agentic AI systems violate the implicit assumptions of database design"]]></title><description><![CDATA[
<p>Giving LLM agents direct, autonomous access to a real production databases with write access seems insane to me.<p>NO ONE, agent or human, should have direct write access to production databases outside of emergency break glass scenarios. This is why we have stored routines and API layers to pre-define what writes are allowed. The facts that agents CAN autonomously write to a database does not imply that they should.<p>For the point about query optimization, again your agents should not be issuing random queries against a production database. We have had the concept of separate analytics databases with different architectures to support exporatory queries for decades.</p>
]]></description><pubDate>Sun, 26 Apr 2026 16:26:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=47911512</link><dc:creator>dherls</dc:creator><comments>https://news.ycombinator.com/item?id=47911512</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47911512</guid></item><item><title><![CDATA[The OpenAI graveyard: All the deals and products that haven't happened]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.forbes.com/sites/phoebeliu/2026/03/31/openai-graveyard-deals-and-products-havent-happened-openai/">https://www.forbes.com/sites/phoebeliu/2026/03/31/openai-graveyard-deals-and-products-havent-happened-openai/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47602565">https://news.ycombinator.com/item?id=47602565</a></p>
<p>Points: 241</p>
<p># Comments: 199</p>
]]></description><pubDate>Wed, 01 Apr 2026 15:55:30 +0000</pubDate><link>https://www.forbes.com/sites/phoebeliu/2026/03/31/openai-graveyard-deals-and-products-havent-happened-openai/</link><dc:creator>dherls</dc:creator><comments>https://news.ycombinator.com/item?id=47602565</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47602565</guid></item><item><title><![CDATA[New comment by dherls in "Stop picking my Go version for me"]]></title><description><![CDATA[
<p>The author fails to mention any of the negative effects they experience due to this go version selection. They say that the effect is "viral" but don't give any concrete examples of why it's a bad thing to keep your toolchain up to date</p>
]]></description><pubDate>Sun, 29 Mar 2026 00:52:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=47559468</link><dc:creator>dherls</dc:creator><comments>https://news.ycombinator.com/item?id=47559468</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47559468</guid></item><item><title><![CDATA[New comment by dherls in "We can't have nice things because of AI scrapers"]]></title><description><![CDATA[
<p>It's much easier to detect a single account abusing your API and ban them/require payment. Trying to police an endpoint open to the internet is like playing g whackamole</p>
]]></description><pubDate>Tue, 13 Jan 2026 22:54:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=46609557</link><dc:creator>dherls</dc:creator><comments>https://news.ycombinator.com/item?id=46609557</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46609557</guid></item><item><title><![CDATA[New comment by dherls in "Spherical Snake"]]></title><description><![CDATA[
<p>Really impressive that it's implemented in < 400 lines of Javascript code and runs so smoothly in my phone's browser (Firefox on Android)</p>
]]></description><pubDate>Tue, 06 Jan 2026 19:55:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=46517714</link><dc:creator>dherls</dc:creator><comments>https://news.ycombinator.com/item?id=46517714</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46517714</guid></item><item><title><![CDATA[New comment by dherls in "More dynamic cronjobs"]]></title><description><![CDATA[
<p>I would definitely recommend not putting complex logic like this in your cron definitions. Much more annoying to find and debug in the future. I prefer to write a short wrapper script that contains the test logic instead and track/version control it</p>
]]></description><pubDate>Sat, 27 Dec 2025 14:42:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=46402167</link><dc:creator>dherls</dc:creator><comments>https://news.ycombinator.com/item?id=46402167</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46402167</guid></item><item><title><![CDATA[New comment by dherls in "Let go of StackOverflow; communities must take ownership"]]></title><description><![CDATA[
<p>Some of the alternatives that the author suggests (Slack, Discord, Matrix rooms) are so much worse to search for answers in. Stack overflow has many disadvantages, but it is extremely good at being a publicly searchable repository of answers to common questions</p>
]]></description><pubDate>Sun, 30 Nov 2025 01:12:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=46092530</link><dc:creator>dherls</dc:creator><comments>https://news.ycombinator.com/item?id=46092530</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46092530</guid></item><item><title><![CDATA[New comment by dherls in "An overly aggressive mock can work fine, but break much later"]]></title><description><![CDATA[
<p>Even in the case you mention you really shouldn't be overriding these methods. Your load settings method should take the path of the settings file as an argument, and then your test can set up all the fake files you want with something like python's tempfile package</p>
]]></description><pubDate>Mon, 17 Nov 2025 02:56:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=45950484</link><dc:creator>dherls</dc:creator><comments>https://news.ycombinator.com/item?id=45950484</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45950484</guid></item><item><title><![CDATA[New comment by dherls in "An overly aggressive mock can work fine, but break much later"]]></title><description><![CDATA[
<p>This blog post talks as if mocking the `open` function is a good thing that people should be told how to do. If you are mocking anything in the standard library your code is probably structured poorly.<p>In the example the author walks through, a cleaner way would be to have the second function take the Options as a parameter and decouple those two functions. You can then test both in isolation.</p>
]]></description><pubDate>Mon, 17 Nov 2025 00:54:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=45949945</link><dc:creator>dherls</dc:creator><comments>https://news.ycombinator.com/item?id=45949945</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45949945</guid></item><item><title><![CDATA[New comment by dherls in "AWS deprecates two dozen services (most of which you've never heard of)"]]></title><description><![CDATA[
<p>I like how the article uses "Googling" as a verb meaning to shut down a service</p>
]]></description><pubDate>Sat, 15 Nov 2025 21:16:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=45940662</link><dc:creator>dherls</dc:creator><comments>https://news.ycombinator.com/item?id=45940662</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45940662</guid></item><item><title><![CDATA[New comment by dherls in "Ask HN: Second generation of intro to software dev for 3rd graders"]]></title><description><![CDATA[
<p>I think the sandwich demo is really good. Once you establish the sandwich idea you can start zooming out to OK now you have a cook making multiple sandwiches, now you have a whole kitchen, and use that to talk about levels of abstraction and how SWEs go from solving one specific problem to more general problems by reusing techniques</p>
]]></description><pubDate>Sun, 26 Oct 2025 19:25:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=45714518</link><dc:creator>dherls</dc:creator><comments>https://news.ycombinator.com/item?id=45714518</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45714518</guid></item><item><title><![CDATA[New comment by dherls in "European.cloud: A Curated Directory of EU-Based Cloud Providers"]]></title><description><![CDATA[
<p>I think the "joke" is if the US government orders a company to hand over that data, the fact that the servers are physically in the EU won't stop anything</p>
]]></description><pubDate>Thu, 16 Oct 2025 13:18:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=45604998</link><dc:creator>dherls</dc:creator><comments>https://news.ycombinator.com/item?id=45604998</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45604998</guid></item><item><title><![CDATA[New comment by dherls in "We all dodged a bullet"]]></title><description><![CDATA[
<p>A solution could be enforcing hardware keys for 2FA for all maintainers if a package has more than XX thousand weekly downloads.<p>No hardware keys, no new releases.</p>
]]></description><pubDate>Tue, 09 Sep 2025 16:20:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=45184241</link><dc:creator>dherls</dc:creator><comments>https://news.ycombinator.com/item?id=45184241</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45184241</guid></item><item><title><![CDATA[New comment by dherls in "Meta and Yandex Disclosure: Covert Web-to-App Tracking via Localhost on Android"]]></title><description><![CDATA[
<p>Another scummy tracking move from Meta, shouldn't be surprised.<p>In general I think browsers should prevent websites reaching out to localhost without explicit opt-in from the user.</p>
]]></description><pubDate>Sat, 30 Aug 2025 20:07:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=45077603</link><dc:creator>dherls</dc:creator><comments>https://news.ycombinator.com/item?id=45077603</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45077603</guid></item><item><title><![CDATA[New comment by dherls in "Use Your Type System"]]></title><description><![CDATA[
<p>With Java, there are a lot of usability issues with checked types. For example streams to process data really don't play nicely if your map or filter function throws a checked exception. Also if you are calling a number of different services that each have their own checked exception, either you resort to just catching generic Exception or you end up with a comically large list of exceptions</p>
]]></description><pubDate>Thu, 24 Jul 2025 16:05:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=44672392</link><dc:creator>dherls</dc:creator><comments>https://news.ycombinator.com/item?id=44672392</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44672392</guid></item><item><title><![CDATA[New comment by dherls in "How encryption for Cinema Movies works"]]></title><description><![CDATA[
<p>I'm confused why it's encrypted as a JPEG image per frame instead of one AES encrypted video file. Since the same AES key is used for each frame it wouldn't add any additional security imo</p>
]]></description><pubDate>Mon, 21 Apr 2025 03:49:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=43748376</link><dc:creator>dherls</dc:creator><comments>https://news.ycombinator.com/item?id=43748376</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43748376</guid></item><item><title><![CDATA[New comment by dherls in "Decrypting encrypted files from Akira ransomware using a bunch of GPUs"]]></title><description><![CDATA[
<p>Charitable, use of system level randomness primitives can be audited by antivirus/EDR.</p>
]]></description><pubDate>Fri, 14 Mar 2025 22:18:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=43367884</link><dc:creator>dherls</dc:creator><comments>https://news.ycombinator.com/item?id=43367884</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43367884</guid></item><item><title><![CDATA[New comment by dherls in "The three-page paper that shook philosophy: Gettiers in software engineering"]]></title><description><![CDATA[
<p>I was thinking that one solution might be to specify that the "justification" also has to be a justified true belief. In this case, the justification that you see a cow isn't true, so it isn't a JTB.<p>Of course that devolves rapidly into trying to find the "base case" of knowledge that are inherent</p>
]]></description><pubDate>Mon, 14 Oct 2024 21:28:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=41842221</link><dc:creator>dherls</dc:creator><comments>https://news.ycombinator.com/item?id=41842221</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41842221</guid></item><item><title><![CDATA[New comment by dherls in "In Defense of LeetCode Interviews"]]></title><description><![CDATA[
<p>> These interviews can identify candidates with strong problem-solving skills and logical reasoning abilities.<p>I would disagree with this premise. Leetcode identifies people who have just finished cramming for Leetcode questions. You don't need logical reasoning abilities to solve Leetcode, just encyclopedic knowledge of algorithms and data structures</p>
]]></description><pubDate>Sat, 12 Oct 2024 04:40:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=41816449</link><dc:creator>dherls</dc:creator><comments>https://news.ycombinator.com/item?id=41816449</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41816449</guid></item></channel></rss>