<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: typesanitizer</title><link>https://news.ycombinator.com/user?id=typesanitizer</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 20 Oct 2026 14:55:23 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=typesanitizer" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by typesanitizer in "How the Claude Code team does code review"]]></title><description><![CDATA[
<p>FWIW, Pangram identifies several sections as 100% AI-written.</p>
]]></description><pubDate>Fri, 16 Oct 2026 19:43:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=50123523</link><dc:creator>typesanitizer</dc:creator><comments>https://news.ycombinator.com/item?id=50123523</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50123523</guid></item><item><title><![CDATA[Everyone is doing Git on S3 wrong]]></title><description><![CDATA[
<p>Article URL: <a href="https://enroute.sh/blog/everyone-is-doing-git-on-s3-wrong">https://enroute.sh/blog/everyone-is-doing-git-on-s3-wrong</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=50101130">https://news.ycombinator.com/item?id=50101130</a></p>
<p>Points: 12</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 15 Oct 2026 09:08:58 +0000</pubDate><link>https://enroute.sh/blog/everyone-is-doing-git-on-s3-wrong</link><dc:creator>typesanitizer</dc:creator><comments>https://news.ycombinator.com/item?id=50101130</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50101130</guid></item><item><title><![CDATA[New comment by typesanitizer in "Object storage is all you need"]]></title><description><![CDATA[
<p>> [..] so isolation isn't a WHERE clause somebody has to remember, [..] Two things the post doesn't cover and I'm happy to get into. What closing the cross-region lost update actually took: [..]<p>Set of my Claude alarm bell, and lo-and-behold, Pangram judges this comment to be 100% AI-generated, albeit with limited confidence.</p>
]]></description><pubDate>Thu, 10 Sep 2026 11:42:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=49642054</link><dc:creator>typesanitizer</dc:creator><comments>https://news.ycombinator.com/item?id=49642054</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49642054</guid></item><item><title><![CDATA[New comment by typesanitizer in "After 7 years in production, Scarf has reluctantly moved away from Haskell"]]></title><description><![CDATA[
<p>Go compiles things at package-level granularity. You only need to recompile your reverse dependencies on making changes. Also there's build caching available out-of-the-box, as well as some support for test caching.</p>
]]></description><pubDate>Sat, 11 Jul 2026 14:25:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=48872348</link><dc:creator>typesanitizer</dc:creator><comments>https://news.ycombinator.com/item?id=48872348</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48872348</guid></item><item><title><![CDATA[Computer Says No: Error Reporting for LTL]]></title><description><![CDATA[
<p>Article URL: <a href="https://wickstrom.tech/2025-11-01-error-reporting-linear-temporal-logic.html">https://wickstrom.tech/2025-11-01-error-reporting-linear-temporal-logic.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45779826">https://news.ycombinator.com/item?id=45779826</a></p>
<p>Points: 5</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 01 Nov 2025 07:23:08 +0000</pubDate><link>https://wickstrom.tech/2025-11-01-error-reporting-linear-temporal-logic.html</link><dc:creator>typesanitizer</dc:creator><comments>https://news.ycombinator.com/item?id=45779826</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45779826</guid></item><item><title><![CDATA[New comment by typesanitizer in "An epic treatise on error models for systems programming languages"]]></title><description><![CDATA[
<p>I have removed the mention of "Let it crash" from that section, and added a clarification for my original intent. I did not mean it as criticism of Erlang or Joe Armstrong, although I 100% understand how it could've been interpreted as such.<p>Thanks for the critical feedback.</p>
]]></description><pubDate>Mon, 10 Mar 2025 10:27:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=43318859</link><dc:creator>typesanitizer</dc:creator><comments>https://news.ycombinator.com/item?id=43318859</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43318859</guid></item><item><title><![CDATA[New comment by typesanitizer in "An epic treatise on error models for systems programming languages"]]></title><description><![CDATA[
<p>Hi Gavin, I've seen your blog before, including some posts about Yao.<p>After feedback on Lobste.rs, I plan on adding a section on conditions and restarts, hopefully sometime later today if time permits. :)<p>I'd be happy to add some information about Yao as well alongside Common Lisp. It would be helpful for me to have some more details about Yao before writing about it, so I have some follow-up questions below. Please feel free to link me to existing writing; I may be misremembering details, but I don't think the answers to these have been covered somewhere.<p>I looked at the docs on the master branch as of mid Jan 2025 (could you confirm if these are up-to-date), particularly design.md, and I noticed these points:<p>> That means that Yao will have unsafe code, like Rust's unsafe. However, unlike Rust, Yao's way of doing unsafe code will be harder to use,<p>So Yao has a delineation between safe and unsafe code, correct? Does "safe" in Yao have the same (or stronger) set of guarantees as Rust (i.e. no memory safety if all necessary invariants are upheld by unsafe code, and boundary of safe-unsafe code)?<p>> Yao's memory management will be like C++'s RAII [..]<p>Does Yao guarantee memory safety in the absence of unsafe blocks, and does the condition+restart system in Yao fall under the safe subset of the language? If so, I'm curious how lifetimes/ownership/regions are represented at runtime (if they are), and how they interact with restarts. Specifically:<p>1. Are the types of restart functions passed down to functions that are called?
2. If the type information is not passed, and conditions+restarts are part of the safe subset of Yao, then how is resumption logic checked for type safety and lifetime safety? Can resumptions cause run-time type errors and/or memory unsafety, e.g. by escaping a value beyond its intended lifetime?<p>---<p>For reading the docs, I used this archive.org link (I saw you're aware of the Gitea instance being down in another comment): <a href="https://web.archive.org/web/20250114231213/https://git.yzena.com/Yzena/Yc/src/branch/master/docs/yao" rel="nofollow">https://web.archive.org/web/20250114231213/https://git.yzena...</a></p>
]]></description><pubDate>Sat, 08 Mar 2025 23:51:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=43304695</link><dc:creator>typesanitizer</dc:creator><comments>https://news.ycombinator.com/item?id=43304695</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43304695</guid></item><item><title><![CDATA[New comment by typesanitizer in "An epic treatise on error models for systems programming languages"]]></title><description><![CDATA[
<p>Hi, blog post author here (unrelated to paper authors).<p>> So in a laps of 15 years (2010-1025),<p>The paper was published in 2014, so the period is 2010-2014, not 2010-2025.<p>> they hand picked 20 bugs from 5 open source filesystem projects (198 total)<p>The bugs were randomly chosen; "hand picked" would imply that the authors investigated the contents of the bug reports deeply before deciding whether to include them (which would certainly fall under "bad science"). The paper states the following:<p>> We studied 198 randomly sampled, real world fail-
ures reported on five popular distributed data-analytic
and storage systems, including HDFS, a distributed file
system [27]; Hadoop MapReduce, a distributed data-
analytic framework [28]; HBase and Cassandra, two
NoSQL distributed databases [2, 3]; and Redis, an in-
memory key-value store supporting master/slave replica-
tion [54]<p>So only 1 out of 5 projects is a file system.<p>> and extrapolated this result. That is not science.<p>The authors also provide a measure of statistical confidence in the 'Limitations section'.<p>> (3) Size of our sample set. Modern statistics suggests that
a random sample set of size 30 or more is large enough
to represent the entire population [57]. More rigorously,
under standard assumptions, the Central Limit Theorem
predicts a 6.9% margin of error at the 95% confidence
level for our 198 random samples. Obviously, one can
study more samples to further reduce the margin of error<p>Do you believe that this is insufficient or that the reasoning in this section is wrong?</p>
]]></description><pubDate>Sat, 08 Mar 2025 13:04:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=43299932</link><dc:creator>typesanitizer</dc:creator><comments>https://news.ycombinator.com/item?id=43299932</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43299932</guid></item><item><title><![CDATA[New comment by typesanitizer in "An epic treatise on error models for systems programming languages"]]></title><description><![CDATA[
<p>Hi, author here. I'm a big fan of Armstrong's work, I've watched several of his talks multiple times and always get something new out of them even if I don't agree entirely. :)<p>I do mention Erlang near the start of the post, around the 360 word mark:<p>> Joe Armstrong’s talk The Do’s and Don’ts of Error Handling: Armstrong covers the key requirements for handling and recovering from errors in distributed systems, based on his PhD thesis from 2003 (PDF) [sidenote 3].<p>> [sidenote 3] By this point in time, Armstrong was about 52 years old, and had 10+ years of experience working on Erlang at Ericsson.<p>> Out of the above, Armstrong’s thesis is probably the most holistic, but it’s grounding in Erlang means that it also does not take into account one of the most widespread forms of static analysis we have today – type systems</p>
]]></description><pubDate>Sat, 08 Mar 2025 12:52:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=43299846</link><dc:creator>typesanitizer</dc:creator><comments>https://news.ycombinator.com/item?id=43299846</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43299846</guid></item><item><title><![CDATA[New comment by typesanitizer in "An epic treatise on error models for systems programming languages"]]></title><description><![CDATA[
<p>Copying my comment from the Lobste.rs thread (<a href="https://lobste.rs/s/az2qlz/epic_treatise_on_error_models_for_systems" rel="nofollow">https://lobste.rs/s/az2qlz/epic_treatise_on_error_models_for...</a>)<p>> Hi, author here, the title also does say “for systems programming languages” :)<p>> For continuations to work in a systems programming language, you can probably only allow one-shot delimited continuations. It’s unclear to me as to how one-shot continuations can be integrated into a systems language where you want to ensure careful control over lifetimes. Perhaps you (or someone else here) knows of some research integrating ownership/borrowing with continuations/algebraic effects that I’m unfamiliar with?<p>> The closest exception to this that I know of is Haskell, which has support for both linear types and a primitive for continuations. However, I haven’t seen anyone integrate the two, and I’ve definitely seen some soundness-related issues in various effect systems libraries in Haskell (which doesn’t inspire confidence), but it’s also possible I missed some developments there as I haven’t written much Haskell in a while.</p>
]]></description><pubDate>Sat, 08 Mar 2025 12:48:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=43299816</link><dc:creator>typesanitizer</dc:creator><comments>https://news.ycombinator.com/item?id=43299816</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43299816</guid></item><item><title><![CDATA[New comment by typesanitizer in "The Evolution of SRE at Google"]]></title><description><![CDATA[
<p>Thanks for writing the summary notes and sharing those here. After reading the Usenix article, I was thinking that we could apply some of the ideas at $WORK, but the exact "How" was still not super clear. Your notes offer a compact and accessible starting point without having to ask colleagues to dive in to a 100+ page PDF. :D</p>
]]></description><pubDate>Sat, 04 Jan 2025 03:03:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=42591977</link><dc:creator>typesanitizer</dc:creator><comments>https://news.ycombinator.com/item?id=42591977</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42591977</guid></item><item><title><![CDATA[New comment by typesanitizer in "Optimizers need a rethink"]]></title><description><![CDATA[
<p>> If you have any language where it is "semantially correct" to execute it with a simple interpetter, than all optimizations in that language are not semantically important by definition, right?<p>Technically, yes. :)<p>But I think this should perhaps be treated as a bug in how we define/design languages, rather than as an immutable truth.<p>- We already have time-based versioning for languages.
- We also have "tiers" of support for different platforms in language implementations (e.g. rarer architectures might have Tier 2 or Tier 3 support where the debugging tooling might not quite work)<p>One idea would be to introduce "tiers" into a language's definition. A smaller implementation could implement the language at Tier 1 (perhaps this would even be within reach for a university course project). An industrial-strength implementation could implement the language at Tier 3.<p>(Yes, this would also introduce more complications, such as making sure that the dynamic semantics at different tiers are equivalent. At that point, it becomes a matter of tradeoffs -- does introducing tiers help reduce complexity overall?)</p>
]]></description><pubDate>Mon, 28 Oct 2024 01:19:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=41967023</link><dc:creator>typesanitizer</dc:creator><comments>https://news.ycombinator.com/item?id=41967023</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41967023</guid></item><item><title><![CDATA[New comment by typesanitizer in "Optimizers need a rethink"]]></title><description><![CDATA[
<p>> In my view, if a compiler optimization is so critical that users rely on it reliably “hitting” then what you really want is for that optimization to be something guaranteed by the language using syntax or types. The way tail calls work in functional languages comes to mind. Also, the way value types work in C#, Rust, C++, etc - you’re guaranteed that passing them around won’t call into the allocator. Basically, relying on the compiler to deliver an optimization whose speedup from hitting is enormous (like order of magnitude, as in the escape analysis to remove GC allocations case) and whose probability of hitting is not 100% is sort of a language design bug.
>
> This is sort of what the article is saying, I guess.<p>I agree with this to some extent but not fully. I think there are shades of grey to this -- adding language features is a fairly complex and time-consuming process, especially for mainstream languages. Even for properties which many people would like to have, such as "no GC", there are complex tradeoffs (e.g. <a href="https://em-tg.github.io/csborrow/" rel="nofollow">https://em-tg.github.io/csborrow/</a>)<p>My position is that language users need to empowered in different ways depending on the requirements. If you look at the Haskell example involving inspection testing/fusion, there are certain guarantees around some type conversions (A -> B, B -> A) being eliminated -- these are somewhat specific to the library at hand. Trying to formalize each and every performance-sensitive library's needs using language features is likely not practical.<p>Rather, I think it makes sense instead focus on a more bottoms-up approach, where you give somewhat general tools to the language users (doesn't need to expose a full IR), and see what common patterns emerge before deciding whether to "bless" some of them as first-class language features.</p>
]]></description><pubDate>Mon, 28 Oct 2024 01:11:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=41966987</link><dc:creator>typesanitizer</dc:creator><comments>https://news.ycombinator.com/item?id=41966987</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41966987</guid></item><item><title><![CDATA[New comment by typesanitizer in "Optimizers need a rethink"]]></title><description><![CDATA[
<p>I'm guessing you've tried these flags mentioned in the blog post but haven't had luck with them?<p>> LLVM supports an interesting feature called Optimization Remarks – these remarks track whether an optimization was performed or missed. Clang support recording remarks using -fsave-optimization-record and Rustc supports -Zremark-dir=<blah>. There are also some tools (opt-viewer.py, optview2) to help view and understand the output.</p>
]]></description><pubDate>Mon, 28 Oct 2024 00:56:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=41966918</link><dc:creator>typesanitizer</dc:creator><comments>https://news.ycombinator.com/item?id=41966918</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41966918</guid></item><item><title><![CDATA[New comment by typesanitizer in "Optimizers need a rethink"]]></title><description><![CDATA[
<p>I've added a clarification in the post to make my position explicit:<p>> This is not to imply that we should get rid of SQL or get rid of query planning entirely. Rather, more explicit planning would be an additional tool in database user’s toolbelt.<p>I'm not sure if there was some specific part of the blog post that made you think I'm against automatic query planning altogether; if there was, please share that so that I can tweak the wording to remove that implication.</p>
]]></description><pubDate>Mon, 28 Oct 2024 00:55:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=41966911</link><dc:creator>typesanitizer</dc:creator><comments>https://news.ycombinator.com/item?id=41966911</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41966911</guid></item><item><title><![CDATA[New comment by typesanitizer in "Optimizers need a rethink"]]></title><description><![CDATA[
<p>Thanks for the feedback.<p>The preceding paragraph had "and occasionally language features" so I thought it would be understood that I didn't mean it as an optimizer-specific thing, but on re-reading the post, I totally see how the other wording "The knobs to steer the optimizer are limited. Usually, these [...]" implies the wrong thing.<p>I've changed the wording to be clearer and put the D example into a different bucket.<p>> In some cases, languages have features which enforce performance-related properties at the semantic checking layer, hence, granting more control that integrates with semantic checks instead of relying on the optimizer:
>
> - D has first-class support for marking functions as “no GC”.</p>
]]></description><pubDate>Mon, 28 Oct 2024 00:51:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=41966902</link><dc:creator>typesanitizer</dc:creator><comments>https://news.ycombinator.com/item?id=41966902</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41966902</guid></item><item><title><![CDATA[New comment by typesanitizer in "The case of a leaky goroutine"]]></title><description><![CDATA[
<p>Structured concurrency is part of the Swift standard library, and was added at the same time when first-class support for concurrency was added.<p>TaskGroup in the standard library - <a href="https://developer.apple.com/documentation/swift/taskgroup" rel="nofollow">https://developer.apple.com/documentation/swift/taskgroup</a><p>Explore structured concurrency in Swift (WWDC 21) - <a href="https://developer.apple.com/videos/play/wwdc2021/10134/" rel="nofollow">https://developer.apple.com/videos/play/wwdc2021/10134/</a></p>
]]></description><pubDate>Mon, 25 Mar 2024 15:27:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=39817533</link><dc:creator>typesanitizer</dc:creator><comments>https://news.ycombinator.com/item?id=39817533</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39817533</guid></item><item><title><![CDATA[New comment by typesanitizer in "Sourcegraph is no longer open source"]]></title><description><![CDATA[
<p>Based on your use of "campaign" (the older name for Batch Changes), it sounds like you were looking into Sourcegraph about 2.5 years ago or before that. Lots has changed since then.<p>We recently released a new indexer scip-clang (<a href="https://about.sourcegraph.com/blog/announcing-scip-clang" rel="nofollow noreferrer">https://about.sourcegraph.com/blog/announcing-scip-clang</a>), which we've used to successfully index large codebases like Chromium. The indexer relies on a JSON compilation database (same as our older indexer lsif-clang) which is easy to produce from CMake, Bazel, Meson, Make etc.<p>We've also added support for cross-repo code navigation for C++ recently. (<a href="https://about.sourcegraph.com/blog/c-cpp-cross-repo" rel="nofollow noreferrer">https://about.sourcegraph.com/blog/c-cpp-cross-repo</a>)</p>
]]></description><pubDate>Tue, 04 Jul 2023 15:22:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=36587877</link><dc:creator>typesanitizer</dc:creator><comments>https://news.ycombinator.com/item?id=36587877</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36587877</guid></item><item><title><![CDATA[New comment by typesanitizer in "Overview of C++ language support in Apple Clang"]]></title><description><![CDATA[
<p>I don't know the answer to your original question, but based on this StackOverflow answer (<a href="https://stackoverflow.com/a/60564952/2682729" rel="nofollow noreferrer">https://stackoverflow.com/a/60564952/2682729</a>), it seems like a small compiler wrapper should do the trick to get the same experience across platforms without having to install another compiler.<p>Depending on the platforms you need to support, a more heavyweight but more reproducible solution would be to use a fixed LLVM toolchain, say using Bazel.</p>
]]></description><pubDate>Mon, 12 Jun 2023 13:03:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=36292767</link><dc:creator>typesanitizer</dc:creator><comments>https://news.ycombinator.com/item?id=36292767</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36292767</guid></item><item><title><![CDATA[New comment by typesanitizer in "The technology behind GitHub’s new code search"]]></title><description><![CDATA[
<p>All of our SCIP indexers are open-source: scip-java (for Java, Kotlin and Scala), scip-typescript (for TypeScript and JavaScript), scip-python, scip-ruby, scip-go and scip-clang (for C and C++).<p>There are also some community-maintained OSS SCIP indexers.
- rust-analyzer: <a href="https://sourcegraph.com/github.com/rust-lang/rust-analyzer/-/blob/crates/rust-analyzer/src/cli/scip.rs" rel="nofollow">https://sourcegraph.com/github.com/rust-lang/rust-analyzer/-...</a>
- scip-zig: <a href="https://github.com/zigtools/scip-zig">https://github.com/zigtools/scip-zig</a></p>
]]></description><pubDate>Tue, 07 Feb 2023 06:54:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=34689609</link><dc:creator>typesanitizer</dc:creator><comments>https://news.ycombinator.com/item?id=34689609</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34689609</guid></item></channel></rss>