<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: jsmith45</title><link>https://news.ycombinator.com/user?id=jsmith45</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 15 Oct 2026 07:11:15 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=jsmith45" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by jsmith45 in "I guess I'm using WebP now?"]]></title><description><![CDATA[
<p>The current WebP Spec RFC9649 defines the format as effectively:<p>A 'RIFF' chunk containing formtype 'WEBP' and a mandatory 'VP8 ' or 'VP8L' chunk, and optional 'VP8X', 'ICCP','ANIM', 'ANMF', 'EXIF', 'XMP ' chunks and possibly some unknown chunks, where if any of these optional chunks appear 'VP8X' must be first, and with certain ordering restrictions on the chunks.<p>It is true that earlier spec versions only allowed the core 'VP8 ' or 'VP8L' chunk, and the spec does warn that some older software might not support files with the newer chunks, so they should only be used if really needed for best compatibility.</p>
]]></description><pubDate>Tue, 13 Oct 2026 15:49:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=50073630</link><dc:creator>jsmith45</dc:creator><comments>https://news.ycombinator.com/item?id=50073630</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50073630</guid></item><item><title><![CDATA[New comment by jsmith45 in "NTSB issues investigative update on B-767 runway excursion accident in Miami"]]></title><description><![CDATA[
<p>This is the spitting image of old pre-CRM thinking:<p>If I try to force the captain to go around, (or follow procedures or whatever), then i am exceeding my authority and will probably be fired. Some cultures have this sort of mentality a lot stronger than others, and it has zero place in the modern cockpit.<p>While a captain can pull rank, they really should only ever do it with respect to the first officer if: an inexperienced first officer is trying to insist on something dangerous or forbidden by law or policy, or if the captain fully understands an FO's concerns, is fully accounting for them, and as the person ultimately responsible for safety, has determined from experience and training that the current action is safer than alternatives, and would explain but cannot explain right now for workload/emergency status reasons.<p>That's it, the <i>only</i> two reasons.</p>
]]></description><pubDate>Fri, 11 Sep 2026 04:30:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=49653582</link><dc:creator>jsmith45</dc:creator><comments>https://news.ycombinator.com/item?id=49653582</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49653582</guid></item><item><title><![CDATA[New comment by jsmith45 in "uv: Deduplicate all files in the wheel cache"]]></title><description><![CDATA[
<p>Yeah, my bigger worry here is more about if somebody direct edits a file in their venv and uv was unable to make the venv with reflink/COW semantics and fell back to hardlinks.<p>This could happen with a user asking their editor to show definition, and then not realizing the result was in some other package, changing it, and saving it, but only if the editor's normal atomic replace mode is disabled. So perhaps that sounds farfetched. But if an AI agent wants to patch some package in a venv, I've seen them bypass the editor and use command line tools to make edits often enough to be concerned. Like corrupting the cache for one package version is already not ideal, and this could potentially affect multiple versions now?<p>I suppose is this happens the right fix is to nuke the cache completely?</p>
]]></description><pubDate>Mon, 31 Aug 2026 18:51:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=49513413</link><dc:creator>jsmith45</dc:creator><comments>https://news.ycombinator.com/item?id=49513413</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49513413</guid></item><item><title><![CDATA[New comment by jsmith45 in "C++26: Standard Library Hardening Experiments"]]></title><description><![CDATA[
<p>You wouldn't.<p>But keep in mind that there are multiple kinds of exceptions.<p>Some exceptions, indicate scenarios the caller could reasonably have avoided. This include things like argument bound or null checks. A caller absolutely could avoid these exceptions by doing its own checks. This can be split between checks that the caller really should have done, like not passing null to a function that cannot take null, vs those where baking the relevant knowledge into the caller would be undesirable (perhaps because future versions of the library expect to accept more values).<p>There are exceptions that in theory a caller could avoid, but in practice it is impractical, like an exception thrown by a parser of some complex format if the provided input isn't legal. The only good way to avoid such an exception is to have a non-throwing parser that you can check with, but you probably don't want to parse twice. An alternative interface for the parser might be able to totally avoid the exception, returning either succeeded (with result tree) or fail with error message, but that would be a design choice of the implementor, not the caller.<p>There can be exceptions that indicate a logic bug in the impleentation (things like throwing if some invariant the implementation is in charge of is violated), but more often this is assertions instead.<p>Lastly, you have exceptions that there is no possible way the caller could always avoid. IO exceptions are among these. While you can sometimes do existence, space, or permission checks or similar to reduce the probability of getting certain exceptions, something else could race your app between the check and performing IO, and make them happen anyway.<p>The primary target for contracts are exceptions that callers both could and should have avoided, and the exception/assertion case that is trying to verify the implementation is working as expected.<p>The other categories of exceptions are more or less totally out of scope.</p>
]]></description><pubDate>Mon, 31 Aug 2026 17:29:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=49512387</link><dc:creator>jsmith45</dc:creator><comments>https://news.ycombinator.com/item?id=49512387</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49512387</guid></item><item><title><![CDATA[New comment by jsmith45 in "Universal health coverage could save $1T and 114k lives a year: study"]]></title><description><![CDATA[
<p>To be clear, they are billing for all the coded line items at the listed prices, it is just that the agreements with the insurance company will disallow many of the line items in favor of other ones. They bill everything, because they may accept some insurance that has not negotiated a day rate, and in that case, the day rate code would be disallowed and some of the other line items will be paid at relevant negotiated rates instead (with others still likely disallowed). It needs to be the same bill in both cases, so they need to include everything, and the list prices need to be greater than or equal to what any insurance would pay, or they might lose out on the difference.<p>This is one of the areas where more standardization would certainly help. If there were more standardization of which codes disallow which other ones (which can currently vary wildly by plan even with the same insurer, must less across insurers), then a lot of line items could actually get removed as truly redundant, vastly simplifying the bill.</p>
]]></description><pubDate>Tue, 18 Aug 2026 21:15:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=49352826</link><dc:creator>jsmith45</dc:creator><comments>https://news.ycombinator.com/item?id=49352826</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49352826</guid></item><item><title><![CDATA[New comment by jsmith45 in "An Engineer's Guide to USB Typе-С (2024)"]]></title><description><![CDATA[
<p>I have successfully had am M1 MacBook open and in active use (albeit not with very heavy workload, mostly text editor and web), while plugged into a Nintendo Switch 1 charger (only thing I had handy at that moment), and was watching the battery percentage slowly increasing over time. So even laptops can sometimes charge slowly while in use with a rather underpowered type C charger (Albeit still slightly better than a cheapo 5V 3A Type-C phone charger).</p>
]]></description><pubDate>Fri, 17 Jul 2026 18:15:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=48950443</link><dc:creator>jsmith45</dc:creator><comments>https://news.ycombinator.com/item?id=48950443</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48950443</guid></item><item><title><![CDATA[New comment by jsmith45 in "European "age verification" "app" forcing everyone to use Android or iOS"]]></title><description><![CDATA[
<p>The original design intention of this approach was that wallet apps were independant and interchangable, with any wallet app able to talk to any attestation provider, to get age attestation tokens, and any site/app able to talk to any wallet. The wallet's job was merely to securely hold a bunch of attestations tokens, and dispense them to other sites/apps on request.<p>So you could use an open source app, or government provided one, or one provided by your bank, whatever you trust the most to not be recording data about relying parties and sending it somewhere you don't want.<p>The version of the document currently on GitHub has heavily deviated from that original intention. This is very unfortunate.<p>Even so this version is supposed to still be incapable by design of sharing any data with a relying party other than "over 18" and was designed such that the only way for a relying party to determine your identity is to be colluding with the attestation provider, or by colluding with the wallet app.<p>To attempt to address the first issue they have the unfortunately optional ZKP protocol. The original design assumed that users could find a wallet that they were certain would not collude with the RPs, and was considered a non-issue, but unfortunately it is a huge hole in the current version.</p>
]]></description><pubDate>Fri, 17 Jul 2026 18:06:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=48950344</link><dc:creator>jsmith45</dc:creator><comments>https://news.ycombinator.com/item?id=48950344</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48950344</guid></item><item><title><![CDATA[New comment by jsmith45 in "ActivityPub over ATProto (2023)"]]></title><description><![CDATA[
<p>The PLC keys are normally intended to be held by your current PDS. Not a hard protocol requirement, but without it, certain things like migrating to a custom domain handle cannot be done cleanly though the app, and would need to be done manually. It might be a requirement of the bluesky hosted PDSes though, as those have some extra requirements beyond the reference self-hosted PDS.<p>The fact that BlueSky runs the PLC central server is supposed to be fixed by them creating a swiss association to run and control it instead, but while they announced this, it is unclear if it went anywhere.<p>If you migrate to a self hosted PDS using the all-in-one migration `goat account migrate` command, it will temporarily change your handle to a subdomain of your new PDS, and leave the new PDS managing the PLC. You can instead perform each step manually via goat or raw API calls, either of which would let you transition to direct PLC key management, and/or a new domain based handle as a single atomic plc update, as part of the overall migration process.<p>See <a href="https://atproto.com/guides/account-migration" rel="nofollow">https://atproto.com/guides/account-migration</a> for a discussion of the process at the protocol level. See <a href="https://whtwnd.com/bnewbold.net/3l5ii332pf32u" rel="nofollow">https://whtwnd.com/bnewbold.net/3l5ii332pf32u</a> for a breakdown of both the automated, and step by step process via `goat`. It does not go into the details of switching to self managed, but it basically requires crafting your new PLC document, sending that one to the old PDS to sign, and then submitting the result. There are manual PLC signing, and submission commands available as `goat plc` subcommands, for use once you have manual control.</p>
]]></description><pubDate>Fri, 10 Jul 2026 19:13:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=48863957</link><dc:creator>jsmith45</dc:creator><comments>https://news.ycombinator.com/item?id=48863957</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48863957</guid></item><item><title><![CDATA[New comment by jsmith45 in "GitLost: We Tricked GitHub's AI Agent into Leaking Private Repos"]]></title><description><![CDATA[
<p>Yeah, an agent should run with permissions no greater than that of the user on whose behalf it is executing, and ideally with less permissions. This is the scenario that is easier to fix, simply give the agent an API token with rights no greater than the user it is acting on behalf of. This could be a literal token for their account, or a limit-rights-to field or whatever, multiple possible approaches.<p>The harder problem is outside actors trying to prompt inject to get the agent to do something the user has rights to do but which the user doesn't want to happen. That is the hard scenario to fix, due to the nature of LLMs.</p>
]]></description><pubDate>Wed, 08 Jul 2026 14:04:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=48832153</link><dc:creator>jsmith45</dc:creator><comments>https://news.ycombinator.com/item?id=48832153</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48832153</guid></item><item><title><![CDATA[New comment by jsmith45 in "FreeBSD ate my RAM"]]></title><description><![CDATA[
<p>Yep.<p>Thrashing is a well known known issue that can occur with swap, but it can also happen from page cache or memory mapped files. Indeed not having swap enabled can make things worse, as private pages that haven't been used in a hours cannot be swapped out to keep the important files cached or memory mapped.<p>Realistically for measuring physical memory sufficiency, you care about memory/data of any type (even files) that will be used in use upcoming time period, and ensuring that a sufficient percentage of it can be held in physical memory to avoid thrashing.<p>This is hard! Technically impossible to know for the general case (halting problem), and all methods of trying to approximate it involves trade-offs.</p>
]]></description><pubDate>Sat, 04 Jul 2026 04:20:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=48782610</link><dc:creator>jsmith45</dc:creator><comments>https://news.ycombinator.com/item?id=48782610</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48782610</guid></item><item><title><![CDATA[New comment by jsmith45 in "Age verification for social media, the beginning of the end for a free internet?"]]></title><description><![CDATA[
<p>In theory, sure, an identity verifier could issue you you a bunch of single use JWTs signed by them that contain `{"over18":"true", "nonce": 12748583..., "iss": "<issuerurl>"}`, signed by their key. A relying party just needs to know the public keys of all the issuers they trust, and can consume this JWT, verify it, and never learn anything about your IRL identity.<p>The important things are that they must issue a bunch at once. (Otherwise, correlating who you are becomes easy). They must keep no record tying nonce or the full JWT to an individual identity. Something user local or otherwise trustworthy (not keeping logs), needs to hold on to these, and send them out as needed, being very very careful never to reuse one (as that would enable cross site tracking). Lastly a relying party must be required to trust many issuers, not just those they are colluding with track users across sites with this.<p>The European Commission actually proposed pretty much exactly this system, also with a variation where instead of revealing the signed token, a ZSNARK proof (that you possess a validly signed token with the over18 attribute from a specific issuer) could be given to the relying party instead (to make it impossible for issuer and relying party to collude to release your identity). Many people here seemed to not like it.</p>
]]></description><pubDate>Tue, 02 Jun 2026 21:09:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=48376333</link><dc:creator>jsmith45</dc:creator><comments>https://news.ycombinator.com/item?id=48376333</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48376333</guid></item><item><title><![CDATA[New comment by jsmith45 in "Why Janet? (2023)"]]></title><description><![CDATA[
<p>I'd argue they are not commutive in regexes either, at least as implemented in practice. Implemented regexes favor the leftmost alternative even when both sides of the alternative match. This matters in cases like: capturing groups, and backtracking implementations. There absolutely are cases where one ordering of alternatives could yield catastrophic backtracking for some input, while the other will avoid it completely.<p>I personally don't like this at all. This means that regex engines that try to generate optimized matching code for an expression can end up generating suboptimal code if you don't want alternative order to matter, since the engine needs to keep that invariant, except in the case when it can prove that the alternatives won't overlap, and a later one can be checked in constant time. If both are true, it is legal to reorder them to do the constant time check before the big complicated wildcard-filled alternative.<p>But personally, I have never written a regex where I actively cared about the alternative evaluation order. I've used some other people made where order is important but never written one myself.<p>I'd love to be able to tell the engine "feel free to swap the evaluation order of my alternatives while optimizing", but few if any such engines offer that as a feature.<p>Now I get that PEGs have commutivity problems are that are different from regexes', which make the issue worse, but that doesn't mean regexes do things right either.</p>
]]></description><pubDate>Tue, 02 Jun 2026 15:43:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=48371748</link><dc:creator>jsmith45</dc:creator><comments>https://news.ycombinator.com/item?id=48371748</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48371748</guid></item><item><title><![CDATA[New comment by jsmith45 in "No way to parse integers in C (2022)"]]></title><description><![CDATA[
<p>If the compiler can find any operation prior to the null check that would be UB if the value is null (even if it is something that in assembly would be harmless, like performing pointer arithmetic on it), the compiler is allowed to assume the pointer is not null, and thus omit the null check. This could then lead to something that will in practice cause problems like dereferencing the pointer.<p>Compilers keep taking more and more advantage of inferring that a values in variables cannot be `x`, because if it were than some previous usage would have been UB. When people file bugs to complain, the compiler authors point at the spec which allows them to assume that UB behavior never happens, so the compiler behavior is legal. The only counterargument is if the compiler has chosen to document some specific behavior for this UB (possibly only with specific flags enabled) in which case the compiler testing that scenario as proof of impossibility is indeed a bug (when the required flags are set).</p>
]]></description><pubDate>Fri, 22 May 2026 14:15:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=48236162</link><dc:creator>jsmith45</dc:creator><comments>https://news.ycombinator.com/item?id=48236162</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48236162</guid></item><item><title><![CDATA[New comment by jsmith45 in "Flipper One – we need your help"]]></title><description><![CDATA[
<p>A combined MPU and MCU architecture isn't <i>that</i> exotic. ST microelectronics currently sells a single chip with that contains a two core Cortex A7 Microprocessor combined with a microcontroller. Admittedly more tightly integrated with ability to communicate via shared memory.<p>The "custom os" part could also be done easilly enough with the correct approach.<p>Specifically systemd has a less-known feature known as system extensions intended for basically exactly these sort of scenarios. These system-extensions are basically disk images containing files in /usr and/or /opt that can be dynamically overlaid on the existing filesystem (the intent is that these are purely additive). Systemd also intends that all os provided configuration live in /usr, with /etc existing only for machine specific or admin applied configuration. (And which should enabling overriding anything specified by the package or OS.)<p>System extensions when used default /opt and /usr to be read-only, but you can enable mutability if you having write routing directories or symlinks in the right spot.<p>So for userland this whole os profiles things could literally just be a set a of system-extensions, a distinct /etc folder, and distinct set of write redirect directories for each. An initramfs can simply bind mount the /etc directory, and add the correct  write redirection symlnks before systemd starts. Rolling back a profile is simply wiping its write redirection and /etc folders.  If you also want each to potentially have distinct device trees and/or customized kernels, that would need additional bootloader work on top, but nothing that feels too extreme.<p>Now in reality, since not everything support systemd style configuration, these OS profiles would probably need to construct an initial /etc by copying files from a base-os template, and then copying in anything included in the system extension images (which can have these as systemd will ignore such folders), but that is straightforward enough.</p>
]]></description><pubDate>Thu, 21 May 2026 14:11:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=48222909</link><dc:creator>jsmith45</dc:creator><comments>https://news.ycombinator.com/item?id=48222909</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48222909</guid></item><item><title><![CDATA[New comment by jsmith45 in "Natural Language Autoencoders: Turning Claude's Thoughts into Text"]]></title><description><![CDATA[
<p>I must be missing something, since I'm not really sure that follows. Initially neither AV nor AR models knows anything about how  activations map to explanations or how explanations map to activations.<p>As far as I can tell, the only reason that the explanations even resemble human speech is that AV and AR start off based on a trained language model. If we instead trained the same model architecture from scratch as AV and AR, they would eventually converge to some round trip format for activations, but it probably would be completely unintelligible and look only like human speech in so far as many of the tokenizer's tokens look like words or word fragments.<p>This whole process seems to rely on the fact that the text AR's output will still strongly favor output sentences that seem to make sense, rather than contradicting learned facts, etc. So it will favor mapping activations to plausible sounding text in ways where patterns can consistently hold across most of the training data. There absolutely is a risk that it will learn the wrong things for certain activation subpatterns like swapping concepts especially if none of the training data included a set of activation sub patterns that would help distinguish them the right way around.</p>
]]></description><pubDate>Fri, 08 May 2026 17:08:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=48065926</link><dc:creator>jsmith45</dc:creator><comments>https://news.ycombinator.com/item?id=48065926</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48065926</guid></item><item><title><![CDATA[New comment by jsmith45 in "Pretty Fish: A better mermaid diagram editor"]]></title><description><![CDATA[
<p>Yeah, as far as I know, you need to define a customized theme to customize pie chart colors. You can prepend the chart with initialization logic like:<p>%%{init: {"theme": "base", "themeVariables": {
"pie1": "#FF5733",
"pie2": "#33FF57",
"pie3": "#3357FF",
"pieStrokeColor": "#000000",
"pieStrokeWidth": 3,
"pieOpacity": 0.8
}}}%%<p>This looks like it works on this site too.</p>
]]></description><pubDate>Wed, 15 Apr 2026 15:02:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=47780104</link><dc:creator>jsmith45</dc:creator><comments>https://news.ycombinator.com/item?id=47780104</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47780104</guid></item><item><title><![CDATA[New comment by jsmith45 in "Union types in C# 15"]]></title><description><![CDATA[
<p>> I think many people already mentioned it, but I also don't feel to good about non-boxed unions not being the default. I'd personally like the path of least resistance to lead to not boxing. Having to opt-in like the current preview shows it looks like a PITA that I'd quickly become tired of.<p>The problem is that the only safe way for the compiler to generate non-boxed unions would require non-overlapping fields for most value types.<p>Specifically the CLR has a hard rule that it must know with certainty where all managed pointers are at all times, so that the GC can update them if it moves the referenced object. This means you can only overlap value types if the locations of all managed pointers line up perfectly.  So sure, you can safely overlap "unmanaged" structs (those that recursively don't contain any managed pointers), but even for those, you need to know the size of the largest one.<p>The big problem with the compiler doing any attempt to overlap value types is that if the value types as defined at compile time may not match the definitions at runtime, especially for types defined in another assembly. A new library version can add more fields. This may mean one unmanaged struct has become too big to fit in the field, or that two types that were previously overlap compatible are not anymore.<p>Making the C# compiler jump though a bunch of hoops to try to determine if overlapping is safe and even then leaving room for an updated library at runtime to crash the whole things means that the compiler will probably never even try. I guess the primitive numeric types could be special cased, as their size is known and will never change.</p>
]]></description><pubDate>Thu, 09 Apr 2026 18:49:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=47707967</link><dc:creator>jsmith45</dc:creator><comments>https://news.ycombinator.com/item?id=47707967</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47707967</guid></item><item><title><![CDATA[New comment by jsmith45 in "Claude Code's source code has been leaked via a map file in their NPM registry"]]></title><description><![CDATA[
<p>Cost tracking is used if you connect claude code with an api key instead of a subscription. It powers the /cost command.<p>It is tricky to meaningfully expose a dollar cost equivlent value for subscribers in a way  that won't confuse users into thinking that they will get a bill that includes that amount. This is especially true if you have overages enabled, since in a session that used overages it was likely partially covered by the plan (and thus zero-rated) with the rest at api prices, and the client can't really know the breakdown.</p>
]]></description><pubDate>Tue, 31 Mar 2026 12:43:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=47586518</link><dc:creator>jsmith45</dc:creator><comments>https://news.ycombinator.com/item?id=47586518</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47586518</guid></item><item><title><![CDATA[New comment by jsmith45 in "Hacking old hardware by renaming to .zip [video]"]]></title><description><![CDATA[
<p>Right. Claude models seem to have had very limited prohibitions in this area baked in via RLHF. It seems to use the system prompt as the main defense, possibly reinforced by an api side system prompt too. But it is  very clear that they want to allow things like malware analysis (which includes reverse-engineering), so any server-side limitations will be designed to allow these things too.<p>The relevant client side system prompt is:<p>IMPORTANT: Assist with authorized security testing, defensive security, CTF challenges, and educational contexts. Refuse requests for destructive techniques, DoS attacks, mass targeting, supply chain compromise, or detection evasion for malicious purposes. Dual-use security tools (C2 frameworks, credential testing, exploit development) require clear authorization context: pentesting engagements, CTF competitions, security research, or defensive use cases.<p>----<p>There is also this system reminder that shows upon using the read tool:<p><system-reminder>
Whenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.
</system-reminder></p>
]]></description><pubDate>Sat, 28 Mar 2026 19:31:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=47557523</link><dc:creator>jsmith45</dc:creator><comments>https://news.ycombinator.com/item?id=47557523</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47557523</guid></item><item><title><![CDATA[New comment by jsmith45 in "The future of version control"]]></title><description><![CDATA[
<p>The file locking approach is one used by centralized version control systems, and are mostly used in the everybody commits directly to trunk style of development. In those environments merging isn't much of a thing. (Of course this style also comes with other challenges, especially around code review, as it means either people are constantly commit unreviewed code, or you develop some other system to pre-review code, which can slow down the speed of checking things in.)<p>This approach is actually fairly desirable for assets types that cannot be easily merged, like images, sounds, videos, etc. You seldom actually want multiple people working on any one file of those at the same time, as one or the other of their work will either be wasted or have to be re-done.</p>
]]></description><pubDate>Mon, 23 Mar 2026 00:52:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=47484130</link><dc:creator>jsmith45</dc:creator><comments>https://news.ycombinator.com/item?id=47484130</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47484130</guid></item></channel></rss>