<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>Thu, 21 May 2026 02:22:39 +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 "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><item><title><![CDATA[New comment by singron in "Linux 7.0 Broke PostgreSQL: The Preemption Regression Explained"]]></title><description><![CDATA[
<p>A specific process can use mlockall to keep all its mapped memory resident and prevent swapping or page cache eviction. That's what earlyoom does so that it can stay responsive when memory gets low. It's unfortunately underutilized in other infrastructure. It's also all-or-nothing: everything stays resident until it's munlocked regardless of how frequently it's used.<p>I had hoped that something like Linux Pressure Stall Information (PSI) would become more useful for low-memory scenarios. E.g. you could put critical processes in a cgroup that could rate-limit swap-outs/evictions so that it was always responsive. There are some cgroup knobs that affect reclamation, but you need a really good guess about how much memory something needs, which makes it hard to use.<p><a href="https://docs.kernel.org/accounting/psi.html" rel="nofollow">https://docs.kernel.org/accounting/psi.html</a></p>
]]></description><pubDate>Thu, 30 Apr 2026 14:44:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=47963337</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=47963337</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47963337</guid></item><item><title><![CDATA[New comment by singron in "Linux 7.0 Broke PostgreSQL: The Preemption Regression Explained"]]></title><description><![CDATA[
<p>This has the wrong explanation of the proposed rseq (Restartable Sequences) solution.<p>> a Linux kernel facility that lets userspace code detect whether it was preempted or migrated during a critical section and restart it if so. PostgreSQL's spinlock paths would use rseq to detect preemption and retry, avoiding the scenario where a preempted lock holder stalls all waiting backends.<p>The real proposal is about time-slice extension, which is a feature that uses the abi for rseq but otherwise has nothing to do with retrying critical sections. While a process holds a s_lock, it would set a request bit. If the kernel tries to preempt that thread while the request bit is set, it instead extends the time slice once and returns control back to the thread. It's further explained here: <a href="https://docs.kernel.org/userspace-api/rseq.html" rel="nofollow">https://docs.kernel.org/userspace-api/rseq.html</a></p>
]]></description><pubDate>Wed, 29 Apr 2026 19:48:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=47953528</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=47953528</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47953528</guid></item><item><title><![CDATA[New comment by singron in "Waymo in Portland"]]></title><description><![CDATA[
<p>If a waymo costs $200k (car+sensors+install labor) and drives 200k miles, then amortizing up-front costs alone are about $1/mile. We don't really know what the TCO of a waymo is, and it's possible it could go down with economies of scale. Rideshare drivers can get paid $1-2/mile although it varies a lot.</p>
]]></description><pubDate>Tue, 28 Apr 2026 19:24:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=47939317</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=47939317</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47939317</guid></item><item><title><![CDATA[New comment by singron in "Commenting and approving pull requests"]]></title><description><![CDATA[
<p>I'm a big believer in this workflow and generally agree with all the guidelines about when to do and not do this.<p>Code review has value, but I don't think we are always honest about the costs. At most places I've worked, there has been an informal understanding that code should be reviewed within 24 hours or so, but there is a world of difference between getting a review within 2 hours and 23 hours.<p>If you have to go back and forth a second time, it's so much more likely that the approval comes much later due to straddling end-of-day in someone's timezone.<p>Tangentially, if you are designing policies for code review at your org, try to think both about minimum requirements (e.g. PRs should get a first look within 24 hours) and typical requirements (e.g. most PRs should get reviewed within 2-3 hours). What typically happens is what determines overall velocity for your org, so it's much more important than whatever strict SLA policy you have. These are also fixable problems if you have targeted conversations with people. E.g. "I noticed X, Y, Z times, you had unreviewed PRs at the end of the day. Can you set aside some time to review code before EOD? Or try installing PR reminder?"</p>
]]></description><pubDate>Sat, 25 Apr 2026 14:26:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=47901785</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=47901785</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47901785</guid></item><item><title><![CDATA[New comment by singron in "To Protect and Swerve: NYPD Cop Has 547 Speeding Tickets"]]></title><description><![CDATA[
<p>For Americans, 120 kph is ~75mph and 140kph is ~85mph. I think there is a single road in the US with an 85 speed limit, and only some states use 75-80.</p>
]]></description><pubDate>Thu, 23 Apr 2026 18:29:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=47879539</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=47879539</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47879539</guid></item><item><title><![CDATA[New comment by singron in "The peril of laziness lost"]]></title><description><![CDATA[
<p>I have noticed LLMs have a propensity to create full single page web applications instead of simpler programs that just print results to the terminal.<p>I've also struggled with getting LLMs to keep spec.md files succinct. They seem incapable of simplifing documents while doing another task (e.g. "update this doc with xyz and simply the surrounding content") and really need to be specifically tasked at simplifying/summarizing. If you want something human readable, you probably just need to write it yourself. Editing LLM output is so painful, and it also helps to keep yourself in the loop if you actually write and understand something.</p>
]]></description><pubDate>Sun, 12 Apr 2026 21:09:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=47744523</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=47744523</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47744523</guid></item><item><title><![CDATA[New comment by singron in "Git commands I run before reading any code"]]></title><description><![CDATA[
<p>If you need to type in a password to unlock your keychain (e.g. default behavior for gpg-agent), then signing commits one at a time constantly is annoying.<p>Does "own" try to sign working copy snapshot commits too? That would greatly increase the number and frequency of signatures.</p>
]]></description><pubDate>Wed, 08 Apr 2026 15:05:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=47691260</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=47691260</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47691260</guid></item><item><title><![CDATA[New comment by singron in "Case study: recovery of a corrupted 12 TB multi-device pool"]]></title><description><![CDATA[
<p>ZFS has similar configurations possible (e.g. copies).<p>You can end up in this state with btrfs if you start with a single device (defaults to data=single,metadata=dup), and then add additional devices without changing the data/metadata profiles. Or you can choose this config explicitly.<p>I really wish the btrfs-progs had a --this-config-is-bad-but-continue-anyway flag since there are so many bad configurations possible (raid5/raid6, raid0/single/dup). The rescue tools are also bad and are about as likely to make the problem worse as fix it.</p>
]]></description><pubDate>Tue, 07 Apr 2026 18:58:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=47679782</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=47679782</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47679782</guid></item><item><title><![CDATA[New comment by singron in "Zero-Cost POSIX Compliance: Encoding the Socket State Machine in Lean's Types"]]></title><description><![CDATA[
<p>Yes it's not UB, but the consequences are not limited to a EINVAL/EBADF/EBADFD. Calling close twice is essentially the same problem as calling free twice, so you get all the use-after-free problems on your file descriptors.</p>
]]></description><pubDate>Wed, 25 Mar 2026 05:04:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=47513495</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=47513495</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47513495</guid></item><item><title><![CDATA[New comment by singron in "Epic Games to cut more than 1k jobs as Fortnite usage falls"]]></title><description><![CDATA[
<p>Epic's 2019 P&L was published as part of Epic v. Apple. According to that:<p>* Fortnight revenue was $5.5B in 2018 and $3.8B in 2019<p>* Employee counts in those years: 1063 and 1932<p>* Average "People" cost per employee: $141K, $142K (CPI adjusted is $182K in 2026).<p>* Average "Production & Hosting" cost per employee: $189K, $150K (CPI $248K, $194K)<p>* Platform royalty expenses were 25% of total game revenue<p>* Slightly under half their Operating Expenses were people<p>* Fortnight was >90% of revenue<p>I have a strong guess that "People" costs doesn't include all salaries, and that many employees are categorized under "Production & Hosting", although I expect that also includes other costs. I'll guess 75% is people, which makes total CPI adjusted average cost per employee somewhere around $320K-$370K, but I'll say $320K.<p>This means 5000 employees cost around $1.6B and cutting 1000 saved around $320M/year in addition to $500M of other costs.<p>Most estimates of Fortnight revenue claim it's roughly flat or falling between 2020 and 2025 fluctuating between $3B and $6B.<p>Unless Unreal Engine or EGS revenue took off, it's kind of weird to quadruple headcount while keeping revenue basically flat or falling. If fortnight only makes $2B next year, then they would be underwater on just royalties and salaries.<p><a href="https://s3.documentcloud.org/documents/20696836/epic-apple-trial-epic-games-exhibit.pdf" rel="nofollow">https://s3.documentcloud.org/documents/20696836/epic-apple-t...</a></p>
]]></description><pubDate>Tue, 24 Mar 2026 20:50:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=47509054</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=47509054</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47509054</guid></item><item><title><![CDATA[New comment by singron in "io_uring, libaio performance across Linux kernels and an unexpected IOMMU trap"]]></title><description><![CDATA[
<p>FYI 11M IOPS in terms of AWS EBS is 138 gp3 volumes (80K IOPS each), which costs about $56K/month or about $1.3M over 2 years. If anyone was considering using EBS for high-IOPS workloads, don't.<p>I think your test had 10 980 Pros, which were probably around $120 each at the time (~$1200 total). SSDs are wildly more expensive now, but even if you spend $500 each, it's nowhere close to EBS.<p>It's apples vs oranges, but sometimes you just want fruit.</p>
]]></description><pubDate>Tue, 24 Mar 2026 18:28:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=47507043</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=47507043</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47507043</guid></item><item><title><![CDATA[New comment by singron in "Wayland set the Linux Desktop back by 10 years?"]]></title><description><![CDATA[
<p>The default config file explains some common things you might want to do. E.g. left or right side and scaling factor.</p>
]]></description><pubDate>Fri, 20 Mar 2026 04:44:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=47450589</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=47450589</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47450589</guid></item><item><title><![CDATA[New comment by singron in "Clockwise acquired by Salesforce"]]></title><description><![CDATA[
<p>I used to work at Clockwise and am (was?) a common shareholder. I'm happy that many employees got to get a job at Salesforce. I'm sure it was tough to swallow some pride and recommend Reclaim, who was our strongest competitor in the space (or at least the one we talked about the most). Reclaim was acquired by Dropbox a while ago, although Dropbox wanted them to continue to run and develop the product there.<p>I also applaud them for not selling the data (as promised in the ToS). There was always a strong commitment to that from day 1, but I'm glad to see that wasn't an option when times got harder. Calendar data sometimes has really sensitive stuff in it, and it would have been a massive betrayal to do anything but delete it after a shutdown.<p>If you are interested in a more detailed piece about a company struggling in this space, I recommend Rise's shutdown announcement last year. We read this at Clockwise and unfortunately felt it in our bones. There is an ironic Clockwise callout in the piece if you can spot it.<p><a href="https://www.risecalendar.com/blog/sunsetting-rise" rel="nofollow">https://www.risecalendar.com/blog/sunsetting-rise</a><p>I'm obviously not part of the decision, but I'm sorry the shutoff for users is so soon. Also, please don't revoke your Clockwise app authorization before the shutoff, since that will prevent Clockwise from cleaning up your calendar. If you want to cleanly turn off Clockwise before the shutoff, you can go through the normal deactivation process at <a href="https://www.getclockwise.com/uninstall" rel="nofollow">https://www.getclockwise.com/uninstall</a>.<p>It's a huge bummer for me too to have worked on something for years and then to have it suddenly vanish one day.<p>If you are looking to start a new company in this space, I'll gladly offer my services to talk you out of it. If any die-hard users want to make a self-hosted tool, I'm happy to give some tips from my experience. I know at least one large company has an internal tool like Clockwise's autopilot/flexible meetings.</p>
]]></description><pubDate>Thu, 19 Mar 2026 23:22:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=47447867</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=47447867</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47447867</guid></item><item><title><![CDATA[New comment by singron in "How to defer US taxes"]]></title><description><![CDATA[
<p>You only pay cap gains if you realize gains, so you would only face a huge tax bill if you had a pile of cash dumped on you. E.g if you inherit a $1M house and sell it, and the IRS thinks you own 20% taxes on $900,000 of gains, then you have $1M of cash on hand to pay $180K in taxes.<p>(Also, if you live in the house for 2 years and then sell it, you can exclude $250K-$500K in gains, but that has nothing to do with inheritance).</p>
]]></description><pubDate>Thu, 19 Mar 2026 20:22:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=47445400</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=47445400</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47445400</guid></item><item><title><![CDATA[New comment by singron in "How to defer US taxes"]]></title><description><![CDATA[
<p>Deferring taxes is essentially an interest-free loan from the government to you. You can take that money, invest it, and then keep most of the earnings when you eventually pay the taxes.<p>There are also some loopholes where capital gains taxes deferred until after death just don't get paid at all. This is the "step-up basis" where your inheritors get to reset the basis of capital assets and neither you nor they has to pay taxes on the capital gain.</p>
]]></description><pubDate>Thu, 19 Mar 2026 18:19:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=47443611</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=47443611</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47443611</guid></item><item><title><![CDATA[New comment by singron in "Changes to OpenTTD Distribution on Steam"]]></title><description><![CDATA[
<p>If you like OpenTTD, you may want to try OpenTTD-JGRPP (JGRennison's Patch Pack). It has a bunch of additional QoL improvements and additional features. It was never distributed on Steam, so nothing has changed there.<p><a href="https://github.com/JGRennison/OpenTTD-patches" rel="nofollow">https://github.com/JGRennison/OpenTTD-patches</a></p>
]]></description><pubDate>Sun, 15 Mar 2026 02:34:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=47383723</link><dc:creator>singron</dc:creator><comments>https://news.ycombinator.com/item?id=47383723</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47383723</guid></item></channel></rss>