<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: singron</title><link>https://news.ycombinator.com/user?id=singron</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 28 Jul 2026 02:06:37 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=singron" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by singron in "Kill The Cookie Banner"]]></title><description><![CDATA[
<p>As long as it's some automated signal, the User-Agent can use any logic it wants to send it without cooperation. The specifics of how to send the signal don't have to be legislated. E.g. Firefox's Tracking Protection has a global default a site-specific overrides, so it's very likely that they would do the same for this or just combine those features.</p>
]]></description><pubDate>Sun, 26 Jul 2026 19:06:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=49061298</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=49061298</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49061298</guid></item><item><title><![CDATA[New comment by singron in "Codeberg Divides"]]></title><description><![CDATA[
<p>Is there any evidence of division? Are all the vibe-coders going to some codeberg2? One of the main complaints is that the banned projects don't have human users proportionate to their activity, so if they all go to codeberg2, then that forge would just be full of projects nobody cares about.<p>Are there any projects on codeberg that are getting banned and actually have significant human interest?<p>If codeberg decided to kick out spammers, nobody would decry the loss, so what's being lost here? Is it strictly slippery slope?</p>
]]></description><pubDate>Fri, 24 Jul 2026 17:19:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=49038838</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=49038838</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49038838</guid></item><item><title><![CDATA[New comment by singron in "Buz – A fork of Bun using modern Zig, with sub-1s incremental builds"]]></title><description><![CDATA[
<p>TFA says the whole codebase is 600k, so that would be 1.8% dead code. IME dead code is much more common in larger codebases as figuring out that code is dead becomes more non-local and changes over time create dead code at a distance. I'm also not sure if the 11k was trivially dead (`if (false) { dead_code(); }`) or if it was more subtle (e.g. dynamically-dispatchable code that can't logically be called).<p>The 1.8% feels high if it's trivially dead. When I've run simple static analysis on decent codebases before, it's been much lower. For non-trivial dead code, it might be low. E.g. a lot of projects have piles of "dead" code behind ancient feature flags that would never be switched.<p>A small amount of dead code is fine. E.g. it might not be worth deleting utility methods that you happen to remove the last use of if they are simple and you might re-add a use later. Generated code is often dead since it's not worth specifying to the generator exactly what will be used. Other times, deleting dead code can lead to a valuable cascade of other deletions and simplifications.</p>
]]></description><pubDate>Fri, 24 Jul 2026 13:12:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=49035054</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=49035054</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49035054</guid></item><item><title><![CDATA[New comment by singron in "JEP 540: Simple JSON API (Now in Incubator)"]]></title><description><![CDATA[
<p>Currently, JsonObject.of has this signature:<p><pre><code>    static JsonObject of(Map<String, ? extends JsonValue> map);
</code></pre>
java.lang.String and other types don't extend JsonValue, and java lacks any trait-like way to add this functionality to existing types, so you would have to change the signature to this:<p><pre><code>    static JsonObject of(Map<String, ? extends Object> map);
</code></pre>
Now you can pass any Object in, but the typechecker can't ensure that it is convertible to json anymore. I.e. it will have to check at runtime that it's either JsonValue or another type that is has a known conversion for (Integer, Double, String, List, Map, etc.). The jackson ObjectMapper e.g. has a lot of configuration available to tell it how to do these conversions on arbitrary types, and I think they want to eliminate that kind of ceremony.<p>It does seem like any serious application is going to use another library, and this will be useful for very simple json usage or single-file hello-world type programs (e.g. to go along with Implicitly Defined Classes and the Flexible Launch Protocol).</p>
]]></description><pubDate>Thu, 23 Jul 2026 18:30:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=49026081</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=49026081</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49026081</guid></item><item><title><![CDATA[New comment by singron in "EVE Online's Carbon engine is now open source: Fenris Creations explains why"]]></title><description><![CDATA[
<p>The system the fight is in experiences time-dilation, where everything slows down to 10% speed or even less. However, a few effects create a positive feedback loop that makes the problem worse.<p>All the surrounding systems still run at full speed. You can travel large distances and still arrive soon enough to matter in the fight. You can also die, respawn in another system, rejoin the fight, and barely miss anything. The positions in the fight therefore move even slower than time-dilation since ships on both sides are replaced so quickly.<p>Large groups have a massive advantage over small groups, so alliances are very large and join various alliances-of-alliances. The playerbase is often organized into only 2-3 major coalitions. At some points in history, nearly all the alliances have joined the same coalition, which leads to a strange pax-Romana called the "blue donut" (referring to all the ownable outer-systems being "blue" or allied with each other).<p>Also, nearly every player in a large fight just follows simple orders. Orbit A and shoot B. There are just a few people calling the shots.<p>Fights sometimes end just because people are bored, need to sleep, or go to work.</p>
]]></description><pubDate>Wed, 08 Jul 2026 17:00:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=48834376</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=48834376</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48834376</guid></item><item><title><![CDATA[New comment by singron in "Do you need separate systems when you already have Postgres?"]]></title><description><![CDATA[
<p>That's interesting, although "read committed" here would be different from the isolation level of the same name. It seems really tricky to implement since tuples could be removed during a query. E.g. the backend could fail to chase tuple-id pointers, and there would be cases where it can be difficult to ensure a tuple is returned exactly once for a given scan.<p>If you use ordinary READ COMMITTED transactions, they will advance their xmin horizons on each query (and allow old version cleanups) up until their own transaction id but unfortunately not beyond that. For a given table, this is important since that transaction is uncommitted and it might modify the table. If you could make long-running transactions readonly on those specific tables, then you could use a different xmin horizon specifically for those tables. It would require a lot of duplicative bookkeeping in shared memory though. You could probably fake this today by using 2 databases on the same machine and using two-phase-commit+dblink/fdw for cross-database transactions/queries (fdw uses repeatable read in transactions, so it won't allow the xmin to advance).</p>
]]></description><pubDate>Mon, 06 Jul 2026 17:55:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=48808140</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=48808140</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48808140</guid></item><item><title><![CDATA[New comment by singron in "Half-Baked Product"]]></title><description><![CDATA[
<p>Pre-purchase, the customers are just looking at lists of features. Post-purchase, they realize the ovens burn bread and cake 10% of the time and pizza 100% of the time, and they just want a good working oven that doesn't burn food.<p>It seems like most customers are returning the oven, which would normally be an extremely strong signal that there is a quality problem. In the SaaS world, the equivalent would be churn, but it's not always as straightforward since if users quit before they sign up (e.g. by reading a review or using a free trial), then they don't show up in that metric.</p>
]]></description><pubDate>Fri, 03 Jul 2026 15:32:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=48776223</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=48776223</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48776223</guid></item><item><title><![CDATA[New comment by singron in "Have you restarted your computer this week?"]]></title><description><![CDATA[
<p>If you turn it off, it might attempt a 45 minute update when you start it again (yes this has happened to me with macos).</p>
]]></description><pubDate>Tue, 30 Jun 2026 17:47:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=48736394</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=48736394</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48736394</guid></item><item><title><![CDATA[New comment by singron in "Claude Code's "extended thinking" is a summary- not authentic thinking"]]></title><description><![CDATA[
<p>Other companies were allegedly distilling the models by training on the reasoning output. By hiding the reasoning tokens, it makes it harder to do this. You can still try to distill the models, but you can't distill reasoning itself as well.<p>This could all be optics as well to try to give the appearance of a defensible moat. E.g. they can claim to investors that they are able to protect a significant chunk of their intellectual property this way. I'm not sure if anyone has a study about how significant the summarization is to distillation.</p>
]]></description><pubDate>Mon, 22 Jun 2026 15:25:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=48631525</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=48631525</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48631525</guid></item><item><title><![CDATA[New comment by singron in "What job interviews taught me about Kubernetes"]]></title><description><![CDATA[
<p>I really wish there was an 80% kubernetes. I think you could get there with some changes:<p>1. No overlay networks. 1 IP per machine. pods use dynamically allocated ports, and the kubelet enforces pods listen only on their assigned ports using seccomp.<p>2. No kube-proxy or equivalent Layer-4 "load-balancer". It's not good, but it's often used. You should use some kind of Layer-7 load balancing instead. Also you need to look up the port number from (1). This also greatly lessens the need for DNS.<p>3. A better config language. YAML and helm templates are terrible. kustomize is built into kubectl, but it's frustratingly limiting and also still very complicated. Something like nix would have been great. This can make it easier to upgrade third party configs since you can have more logic to validate and merge your settings with upstream defaults or templates.<p>4. Maybe an EBF-like for the api server? If the built-in k8s objects don't have a setting for something, then you need to write an operator or control loop yourself and then run that too, which is a big lift. Over time, k8s just keeps adding more and more built-in things and then revising them, which creates a ton of churn. If you could easily script simple operations, then they wouldn't have to build in every permutation ahead of time. E.g. the HorizontalPodAutoscaler has 24 config object types with several fields each, but all it does is set replicas based on data read from the api-server, so it could be replaced by some kind of flexible script that runs in the control plane.</p>
]]></description><pubDate>Tue, 16 Jun 2026 04:39:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=48550653</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=48550653</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48550653</guid></item><item><title><![CDATA[New comment by singron in "PgDog is funded and coming to a database near you"]]></title><description><![CDATA[
<p>If your working set is 20 TB, then it's pretty big. Each database has its own mix of hot/cold data, so it's impossible to compare without more information. A better measure might be IOPS. RDS has fairly low maximum IOPS unless you spend a lot more for provisioned IOPS or use Aurora.</p>
]]></description><pubDate>Wed, 10 Jun 2026 16:41:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=48478957</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=48478957</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48478957</guid></item><item><title><![CDATA[New comment by singron in "How's Linear so fast? A technical breakdown"]]></title><description><![CDATA[
<p>I have mysteriously lost comments/descriptions I wrote on issues. I figured it was related to a failed and lost opportunistic update like this, although I suppose it could have been caused by a fixable bug.</p>
]]></description><pubDate>Sun, 07 Jun 2026 20:51:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=48438416</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=48438416</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48438416</guid></item><item><title><![CDATA[New comment by singron in "Google to pay SpaceX $920M a month for compute capacity at xAI data centers"]]></title><description><![CDATA[
<p>I'm not sure this is true for Google. Ignoring their equity in Anthropic, AI is generally a threat to Google, since it's the closest thing to upsetting their search monopoly. The best case for Google is if OpenAI and Anthropic are way out over their skis, and Google is the only major player left with their sturdier financial position. The worst case is if ChatGPT/Claude completely displace search and nobody wants to pay for gemini. I find it unlikely that all three go down for the same reason.</p>
]]></description><pubDate>Fri, 05 Jun 2026 22:11:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=48419006</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=48419006</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48419006</guid></item><item><title><![CDATA[New comment by singron in "Google to pay SpaceX $920M a month for compute capacity at xAI data centers"]]></title><description><![CDATA[
<p>It's circular since Google owns part of SpaceX. According to [1] they own 7% of SpaceX, so a $1.75T IPO would value their stake at $120B. The target IPO price is >90x revenue, so if Google increases SpaceX's revenue by $11B, SpaceX's valuation could increase by $990B to maintain the same multiple, which would increase the value of Google's stake by $69B.<p>1: <a href="https://finance.yahoo.com/markets/stocks/articles/alphabet-stock-offers-exposure-spacex-113105050.html" rel="nofollow">https://finance.yahoo.com/markets/stocks/articles/alphabet-s...</a></p>
]]></description><pubDate>Fri, 05 Jun 2026 21:02:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=48418240</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=48418240</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48418240</guid></item><item><title><![CDATA[New comment by singron in "Google employees internally share memes about how its AI sucks"]]></title><description><![CDATA[
<p>I haven't worked there in several years, but assuming memegen hasn't wildly changed: Management likes having a pulse on employees, and they tolerate memegen since it's mostly fun, it builds shared culture in a massive company, lets workers (mostly) harmlessly blow off steam, and it would be massively unpopular to shut it down. Management does not like that memegen is often a nexus of cynicism and employee activism. Also in my experience, most employees were nearly completely agnostic or ignorant about whatever trend was on memegen, so it wasn't necessarily representative.</p>
]]></description><pubDate>Thu, 04 Jun 2026 16:38:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=48401128</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=48401128</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48401128</guid></item><item><title><![CDATA[New comment by singron in "Meta workers can opt out of being tracked at work up to 30 min"]]></title><description><![CDATA[
<p>After 5 years, you'll have an extra $1M in savings, and you can safely pay yourself 4% or $40k each year in perpetuity without doing any work.<p>This is also a really extreme version of the prisoners dilemma. In the standard formula, there are 2 prisoners, so it's somewhat practical to not defect, but there are hundreds of thousands of qualified candidates for working at Meta in these roles, so your personal decision to defect or not has likely no effect on the ultimate outcome. I.e. for the second option to work, you actually need to organize a unified labor movement with no defectors, which is probably impossible.</p>
]]></description><pubDate>Wed, 03 Jun 2026 15:13:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=48385214</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=48385214</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48385214</guid></item><item><title><![CDATA[New comment by singron in "Formal Verification Gates for AI Coding Loops"]]></title><description><![CDATA[
<p>These guard types are great and I've heavily used them in the past. But why codegen them?<p>E.g. the jwt auth example has some major problems since the verification rules aren't fully specified in the spec. The jwt-token verified rule only checks that the string isn't empty, but it doesn't actually verify that it is correctly parsed, non-expired, and signed by a trusted key. The authenticated-user rule doesn't check that the user-id actually came from the jwt. If you hand-wrote your constructor, you would ensure these things. Similarly, all the other constructors allow passing in whatever values you like instead of checking the connections of the real objects.<p>By calling the constructor for these types, you are making an assertion about the relationship of the parameter values. If AI is calling the constructor, then it's able to make it's own assertions and derive whatever result it wants. That seems backwards. AI should use the result of tenant-access to deduce that a user is a member of tenant, but if they can directly call `(tenant-access user-id tenant-id true)`, then they can "prove" tenant-access for anything. In the past, we have named the constructors for these types `TenantAccess.newUnverified`, and then heavily scrutinized all callers (typically just jwt-parsers and specific database lookups). You can then use `TenantAccess.{userId,tenantId}` without scrutiny elsewhere.</p>
]]></description><pubDate>Wed, 20 May 2026 17:51:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=48211445</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=48211445</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48211445</guid></item><item><title><![CDATA[New comment by singron in "Removing the modem and GPS from my 2024 RAV4 hybrid"]]></title><description><![CDATA[
<p>Specifically it decrements the TTL of routed packets, so hotspot traffic will tend to have a TTL of 63 instead of 64. You could theoretically disable this at the risk of creating infinite routing loops, although android probably makes it inaccessible if the kernel has a setting for it at all, so you might have to rewrite packets in user space.</p>
]]></description><pubDate>Fri, 15 May 2026 00:13:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=48142914</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=48142914</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48142914</guid></item><item><title><![CDATA[New comment by singron in "Why should a Trace-ID be 128 bits? (A Surprisingly Long Answer)"]]></title><description><![CDATA[
<p>Yes. The original Dapper used 64 bit trace ids and collisions were rarely a problem.<p>If you don't drop any spans from a trace, you can completely disambiguate a collision since the trace will have two distinct root spans. If you are missing spans, you might have a break in the parent-child links.<p>Even with infinite retention, your analysis will bucket by time somehow, so a collision might have no effect if the collision doesn't happen at a proximate time. If you are manually looking at traces, it will be very obvious there is a collision unless they happen at the same time.<p>Also, birthday paradox only expresses probability that there is a collision somewhere, but if you are filtering or looking at single spans, then the probabiliy that you actually see a collision is greatly reduced.<p>I think for basically all systems, an additional 64-bits has insignificant additional cost, so you may as well prevent collisions, but I think it could be a reasonable tradeoff if it mattered.</p>
]]></description><pubDate>Thu, 07 May 2026 16:33:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=48051429</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=48051429</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48051429</guid></item><item><title><![CDATA[New comment by singron in "Mozilla's opposition to Chrome's Prompt API"]]></title><description><![CDATA[
<p>I thought it was clear and am also surprised by the reaction (en-US speaker). "Is/are expected" is generally used as a passive-voiced form of "we/they predict" (obviously without having to specify a specific pronoun). E.g. "It's expected to rain tomorrow" means a weather forecast says it will rain tomorrow and usually not that people want it to rain tomorrow.<p>I wonder if this phrase has different connotations among other English readers? A lot of these comments are fairly early for US timezones.</p>
]]></description><pubDate>Thu, 30 Apr 2026 15:12:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=47963741</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=47963741</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47963741</guid></item></channel></rss>