Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    P

    Predrag Gruevski

    predr.ag · Personal blog · on HN since 2022

    Predrag Gruevski is a Rust developer who writes about semver checking, undefined behavior, compilers and odd debugging stories.

    Visit blogRSSHN submissions
    ProgrammingLanguages & Compilers
    What HN says

    HN commenters link his posts on Rust semver-checking speedups and undefined behavior, and the Wi-Fi-only-works-when-raining story fits a list of strange bugs.

    Stats for nerds
    33HN people shared it
    50linked in comments
    1.2Kstory points
    Jul 2026last shared
    2022people per year2026

    Top posts on HN

    1. 1
      The Wi-Fi only works when it's raining
      6 people · 1.2K points · first shared 2024 · 324 comments on HN
    2. 2
      Unsoundness and accidental features in the [target_feature] attribute
      3 people · 9 points · first shared 2025 · Discussion on HN
    3. 3
      The Self-Cancelling Subscription
      3 people · 8 points · first shared 2026 · 1 comments on HN
    4. 4
      How to Query Almost Everything (2022)
      1 person · 8 points · first shared 2024 · Discussion on HN
    5. 5
      Speeding up Rust semver-checking by over 2000x
      6 people · 7 points · first shared 2023 · Discussion on HN
    6. 6
      Mediocrity can be a sign of excellence, and other stories
      4 people · 6 points · first shared 2023 · 1 comments on HN
    7. 7
      Toward Fearless "cargo update"
      3 people · 5 points · first shared 2022 · Discussion on HN
    8. 8
      Debugging Safari: If at first you succeed, don't try again
      2 people · 5 points · first shared 2022 · 1 comments on HN
    9. 9
      Is this Rust trait sealed or not?
      2 people · 5 points · first shared 2024 · Discussion on HN
    10. 10
      The Most Amusing Security Flaws I've Discovered
      1 person · 4 points · first shared 2025 · Discussion on HN

    What HN people wrote when they linked it

    • endosporeJul 2026

      > Zig does have invariants

      Not these in particular. You are again ignoring the context.

      > Undefined behavior does not mean a bug can be triggered.

      Undefined behavior are bugs by themselves. Let's check if you are holding any of the wrong assumptions:

      https://predr.ag/blog/falsehoods-programmers-believe-about-undefined-behavior/

      > `unsafe` is grep'able, hence all memory safety bugs are grep'able.

      Wrong implicit premise: "all memory safety bugs resides in unsafe functions/blocks".

      No. Even assuming everything is done idiomatically, memory safety bugs can still originate from unsafe blocks and all the safe functions in the same module. So we want the module containing unsafe to be small and closed. Otoh with this code base unsafe lives in every module.

      Making them encapsulated is the whole point of Rust, in this code nothing is encapsulated so no, they missed the whole point of it.

      Aaand it's not like you can just remove the unsafe blocks one by one trivially. It's as hard as rewriting the codebase from ground up without reference (unlike the current migration) as every referenced object in the call graph needs to be reordered. Well partly because the original code sucks I assume.

    • nayukiNov 2022

      > Everything I wish I knew when learning C

      For me, by far my biggest regret is that the learning materials I was exposed to (web pages, textbooks, lectures, professors, etc.) did not emphasize how insidious undefined behavior is.

      Two of the worst C and C++ debugging experiences I had followed this template: Some coworker asked me why their function was crashing, I edit their function and it sometimes crashes or doesn't depending on how I rearrange lines of code, and later I figure out that some statement near the top of the function corrupted the stack and that the crashes had nothing to do with my edits.

      Undefined behavior is deceptive because the point at which the program state is corrupted can be arbitrarily far away from the point at which you visibly notice a crash or wrong data. UB can also be non-deterministic depending on OS/compiler/code/moonphase. Moreover, "behaving correctly" is one legal behavior of UB, which can fool you into believing your program is correct when it has a hidden bug.

      A related post on the HN front page: https://predr.ag/blog/falsehoods-programmers-believe-about-undefined-behavior/ , https://news.ycombinator.com/item?id=33771922

    • bhawksFeb 2023

      > More details in my blog post here: https://predr.ag/blog/speeding-up-rust-semver-checking-by-over-2000x/

      Tl;Dr implementations of the adapter api can provide hashmap lookups and the query engine will use this when possible before doing a full scan - this is transparent to the query author.

      A 3000 word essay takes approximately 10 minutes to read. (Assuming subject familiarity) It is frustrating when the main point is at the end and very little is discussed about the shape of the new api besides the fact that it is experimental.

      I spent quite awhile on the site trying to understand the features and benefits of the query language. I left unsatisfied by the long commentless query examples and repeated claims of being able to query anything. It'd be nice to have a discussion of the what the language is, how an adapter should be implemented and how the engine will use my adapter. Maybe that is covered in linked video talks but there are no slides to skim to see if thats worth my time.

      OP I appreciate your passion and enthusiasm but as a potential user I can't figure out where to start with the project.

    • vghaisasJul 2025

      Came across this list in the comments of this discussion, lots of great stories here! https://news.ycombinator.com/item?id=44466030

      My personal list of stories of this kind includes:

      - Car allergic to vanilla ice cream: https://www.cs.cmu.edu/~wkw/humour/carproblems.txt

      - Can't log in when standing up: https://www.reddit.com/r/talesfromtechsupport/comments/3v52pw/i_cant_log_in_when_i_stand_up/

      - OpenOffice won't print on Tuesdays: https://bugs.launchpad.net/ubuntu/+source/cupsys/+bug/255161/comments/28

      - Wi-Fi only works when it's raining: https://predr.ag/blog/wifi-only-works-when-its-raining/

    • obi1kenobiJul 2023

      Nice summary! I'd also add that part of the public interface you're on the hook for is never explicitly written down in the source code, and is instead derived automatically by the compiler based on a set of rules. There are excellent reasons why this is the case, but as you could imagine this doesn't make semver any easier.

      For Rust folks, I'm talking about auto traits like Send and Sync.

      More info and examples here:

      https://predr.ag/blog/toward-fearless-cargo-update/

    • fl0kiJun 2024

      It's only fair to call out that #[non_exhaustive] only helps you for the very specific case of adding new enum variants or struct fields. It does nothing for the burden of keeping all existing variants and fields compatible with any way they could have been matched.

      However it's also only fair to note that the Rust ecosystem does not consider every [potential] breaking change a major one. https://predr.ag/blog/some-rust-breaking-changes-do-not-require-major-version/

    Related

    matkladmatklad.github.io237 people

    Architecture.md

    matklad
    Personal · last shared 2026
    LLVM Blogblog.llvm.org226 people

    Clang Is Now Used to Build Chrome for Windows

    LLVM Blog
    Company · last shared 2026
    togotototogototo.wordpress.com17 people

    The ups of downs of porting 50k lines of C++ to Go

    togototo
    Personal · last shared 2019
    PVS-Studio Blogviva64.com135 people

    Criticizing the Rust Language, and Why C/C++ Will Never Die

    PVS-Studio Blog
    Company · last shared 2021
    fasterthanli.mefasterthanli.me236 people

    A half-hour to learn Rust

    fasterthanli.me
    Personal · last shared 2026
    Manish Goregaokarmanishearth.github.io97 people

    Picking Apart the Crashing iOS String

    Manish Goregaokar
    Personal · last shared 2026
    without.boatswithout.boats80 people

    Pin

    without.boats
    Personal · last shared 2026
    Niko Matsakissmallcultfollowing.com221 people

    Towards a Rust Foundation

    Niko Matsakis
    Personal · last shared 2026