Work in progress: 181,232 of 181,233 sites checked so far, more every week · updated 2 Nov 2026Missing a blog? Tell us

Top all-time · #8591

J

jacko.io

Personal blog · jacko.ioprogrammingsystems

jacko.io is a personal blog at jacko.io about programming and systems. Since 2021, 9 different Hacker News readers have linked it 33 times, most often “Never Snooze a Future”. It is still writing: the last post was on 2026-10-19, and you can follow it by feed.

Visit the blog
33mentions?
9HN people?
2021–2026first – last linked?
Links on Hacker News per year · peak 12 in 2025

Too few sampled comments (3) to say how often HN recommends it.?

Why HN links it

The linked posts cover static search trees compared with binary search and a surprising enum size optimization in the Rust compiler. The comments only discuss Rust's lack of a formal spec and whether graphs are hard to write in Rust.

Summarised by Claude from a sample of 3 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.

Most-linked posts?

  1. Never Snooze a Future
    5 people · 5 mentions · first linked 2026-03-02
  2. Safety and Soundness in Rust
    3 people · 6 mentions · first linked 2023-03-05
  3. Object Soup Is Made of Indexes (Rust)
    2 people · 11 mentions · first linked 2023-10-23
  4. Async Rust in Three Parts
    2 people · 4 mentions · first linked 2024-10-23
  5. Smart Pointers Can't Solve Use-After-Free in C++
    2 people · 3 mentions · first linked 2025-02-24

What Hacker News says?

  1. I often hear this and am confused; not only are things like 'object soup'[0] possible and straightforward (putting things in collections and referring to them by indices), I never concretely hear why a graph or doubly-linked list becomes uniquely difficult to implement in Rust (and would genuinely be curious to learn why you feel this way). If you needed such data structures anyway, they're either in the standard li…

    Comment linking /object_soup.html

    on “Static search trees: faster than binary search”
  2. Submitted Async Rust in Three Parts as a story · 162 points

    HN discussion
  3. Rust futures are "just" structs with a poll() method. The poll() method is a function like any other, so it can have local variables on the stack as usual, but anything it wants to save between calls needs to be a field of the struct instead of a stack local. The magic of async/await is that the compiler figures out which of your async function's variables need to be fields on that struct, and it generated the struc…

    Comment linking /async_intro.html

    on “Futurelock: A subtle risk in async Rust”
  4. Submitted How to Pronounce Chinese Names a Little Better as a story · 23 points

    HN discussion
  5. > This seems like a contradiction to me. How can future1 acquire the Mutex in the first place, if it cannot run? The word "given" is really odd to me. `future1` did run for a bit, and it got far enough to acquire the mutex. (As the article mentioned, technically it took a position in a queue that means it will get the mutex, but that's morally the same thing here.) Then it was "paused". I put "paused" in scare quote…

    Comment linking /async_intro.html

    on “Futurelock: A subtle risk in async Rust”
  6. Submitted Two Attacks on Naive Tree Hashes as a story · 6 points

    HN discussion
  7. C-with-sanitizers is miles ahead of what C used to be, but just a couple weeks ago I ran into a dangling pointer bug that ASan doesn't catch. (Sidenote 5 here: https://jacko.io/smart_pointers.html ) It seems like one of the big downsides of sanitizers is that they can't instrument other people's code, in this case the C standard library.

    Comment linking /smart_pointers.html

    on “I stopped everything and started writing C again”
  8. Submitted Smart Pointers Can't Solve Use-After-Free in C++ as a story · 5 points

    HN discussion
  9. > It's true that Rust UB can only arise from unsafe blocks, but it is not limited to unsafe blocks. This is correct, and it's hard to teach, and I agree that a lot of folks get it wrong. (Here's my attempt: https://jacko.io/safety_and_soundness.html .) But I think this comment is understating how big of a difference this makes: 1. Rust has a large, powerful safe subset, which includes lots of real-world programs. Un…

    Comment linking /safety_and_soundness.html

    on “Translating All C to Rust (TRACTOR)”
  10. Submitted Never Snooze a Future as a story · 3 points

    HN discussion
  11. > Predictable response: "But they can only occur in unsafe regions which you can grep for" and my response to that: "so?" The situation is both worse than this and better than this. Consider the .set_len() method on Rust's Vec. It's unsafe, because you could just .set_len(1_000_000) and then the Vec would happily let you try to read the nonexistent millionth element and segfault. However, if you could edit the stand…

    Comment linking /safety_and_soundness.html

    on “Hacktical C: practical hacker's guide to the C programming language”
  12. Submitted Async Rust in Three Parts as a story · 2 points

    HN discussion
  13. Indexes: https://jacko.io/object_soup.html

    Comment linking /object_soup.html

    on “Zig feels more practical than Rust for real-world CLI tools”
  14. Submitted Never Snooze a Future as a story · 2 points

    HN discussion
  15. My recommendation is that you do whatever you feel like with ownership when you first write the code, but then if something forces you to come back and change how ownership works, seriously consider switching to https://jacko.io/object_soup.html .

    Comment linking /object_soup.html

    on “Four limitations of Rust's borrow checker”
  16. Submitted Never Snooze a Future as a story · 2 points

    HN discussion
  17. In my experience there are two versions of "fighting the borrow checker". The first is where the language has tools it needs you to use that you might not've seen before, like enums, Option::take, Arc/Mutex, channels, etc. The second is where you need to stop using references/lifetimes and start using indexes: https://jacko.io/object_soup.html

    Comment linking /object_soup.html

    on “Four limitations of Rust's borrow checker”
  18. Submitted Safety and Soundness in Rust as a story · 2 points

    HN discussion
  19. > It just feels wrong to go around hiding everything that's going on from the borrow checker and moving the errors to runtime. But maybe that's what you need to do to prototype things in Rust without a lot of pain? There's some truth to that, but I think the real problem is when some part of the state of your program looks like a graph with loops and cycles (not a tree). It's possible that it only looks that way dur…

    Comment linking /object_soup.html

    on “Stop making me memorize the borrow checker”
  20. Submitted Never Snooze a Future as a story · 1 points

    HN discussion
  21. I don't love Rc as a cure for borrow checker woes. When Rust programs need cyclic, graph-y things like back references, I almost always suggest moving to indexes: https://jacko.io/object_soup.html . You can get fancy and reach for a SlotMap or a whole ECS, but a lot of simple cases can get away with just Vec. (And even complex cases can use HashMap if performance isn't critical.)

    Comment linking /object_soup.html

    on “Stop making me memorize the borrow checker”
  22. Submitted Never snooze a future in async Rust as a story · 1 points

    HN discussion
  23. EDIT: > While not as formalized as C/C++, Rust's "spec" exists in the reference, nomicon, RFCs and documentation. I believe that there is a desire for a spec, but enough resources exist that the community can continue without one with no major negative side-effects (unless you want to re-implement the compiler from scratch, I suppose). Thank you, I was unaware that this is a thing. > This post probably answers a lot…

    Comment linking /safety_and_soundness.html

    on “A surprising enum size optimization in the Rust compiler”
  24. Submitted Smart Pointers Can't Solve Use-After-Free as a story · 1 points

    HN discussion
  25. > What does "undefined behavior" mean without a spec? While not as formalized as C/C++, Rust's "spec" exists in the reference, nomicon, RFCs and documentation. I believe that there is a desire for a spec, but enough resources exist that the community can continue without one with no major negative side-effects (unless you want to re-implement the compiler from scratch, I suppose). The compiler may exploit "lack of U…

    Comment linking /safety_and_soundness.html

    on “A surprising enum size optimization in the Rust compiler”
  26. Submitted Object Soup Is Made of Indexes (Rust) as a story · 1 points

    HN discussion
  27. It's "easy" to do it right but also very common to do it wrong: https://jacko.io/tree_hashing.html

    Comment linking /tree_hashing.html

    on “A webshell and a normal file that have the same MD5”
  28. What you're talking about is what I was referring to as "safe APIs that are lying to you and are actually unsound". I've written more about safety and soundness here: https://jacko.io/safety_and_soundness.html

    Comment linking /safety_and_soundness.html

    on “Converting the Kernel to C++”
  29. I think a game is a good example, or anything that's kind of like a game in that it's modeling a world that's changing over time. Objects come and go, and they "target" each other or "require" each other or whatever sort of relationships the program wants to express. Those relationships end up forming a graph that might contain cycles. I just put up a blog post about this actually :) https://jacko.io/object_soup.htm…

    Comment linking /object_soup.html

    on “Was Rust Worth It?”
  30. Oh I just put up a blog post about this on Monday :) https://jacko.io/object_soup.html Agreed that I wish more beginner Rust books had a section about this. The pattern is quite simple, but it's hard for beginners who get stuck to realize that they need it.

    Comment linking /object_soup.html

    on “Was Rust Worth It?”

Search all of HN for jacko.io