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

Top all-time · #813

W

Without boats, dreams dry up

Personal blog · without.boatsprogramming

Without boats, dreams dry up is a personal blog at without.boats about programming. Since 2020, 81 different Hacker News readers have linked it 148 times, most often “Revisiting a 'Smaller Rust'”. The last post was in 2024, but the archive is still widely read.

Visit the blog
148mentions?
6recommend?
81HN people?
2020–2026first – last linked?
Links on Hacker News per year · peak 41 in 2024

Sometimes recommended · 6 of 40 sampled comments recommend it?

Why HN links it

HN readers link without.boats for its Rust writing on async, io-uring, ownership and a "smaller Rust" design. Commenters cite it as the reference on these topics.

Recommended for · 6 comments
Commenters call one post a favourite piece of writing and say the smaller-Rust, registers and io-uring posts are worth reading.

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

Most-linked posts?

  1. Revisiting a 'Smaller Rust'
    15 people · 17 mentions · first linked 2020-09-30
  2. Why Async Rust? (2023)
    10 people · 14 mentions · first linked 2023-10-15
  3. Notes on a Smaller Rust (2019)
    10 people · 14 mentions · first linked 2020-07-22
  4. The Scoped Task Trilemma
    8 people · 8 mentions · first linked 2023-04-08
  5. Pinned Places
    6 people · 7 mentions · first linked 2024-07-23
  6. A governance system, if you can keep it
    5 people · 5 mentions · first linked 2023-05-27
  7. The Registers of Rust
    5 people · 5 mentions · first linked 2023-03-08
  8. Notes on Io-Uring
    4 people · 5 mentions · first linked 2020-07-05
  9. References are like jumps
    4 people · 4 mentions · first linked 2024-05-13
  10. Let futures be futures
    3 people · 4 mentions · first linked 2024-02-03

What Hacker News says?

  1. This is a complicated question, and ends up different for each individual. For me, I don't see the borrow checker as being more silly than GC, just an alternative, and one that speeds up my development process, not slows it down. I am also, of course, incredibly biased. Rust also has many, many features that are not the borrow checker. Some people prefer Rust because of those features, in spite of the borrow checker…

    Comment linking /blog/notes-on-a-smaller-rust/

    on “Single Page Applications using Rust”
  2. Submitted Pin as a story · 498 points

    HN discussion
  3. https://github.com/tailscale/tailscale/pull/2370 was a practical drive toward this, will not proceed on this path. much more approachable, boats has written about challenges integrating in rust: https://without.boats/tags/io-uring/ in the most general form: you need a fairly "loose" memory model to integrate the "best" (performance wise) parts, and the "best" (ease of use/forward looking safety) way to integrate req…

    Comment linking /tags/io-uring/

    on “QUIC is not quick enough over fast internet”
  4. Submitted Coroutines and effects as a story · 248 points

    HN discussion
  5. Doesn't work because it relies on caller-managed buffers. See withoutboats' post: https://without.boats/blog/io-uring/

    Comment linking /blog/io-uring/

    on “Why asynchronous Rust doesn't work”
  6. Submitted Let futures be futures as a story · 116 points

    HN discussion
  7. How does this proposal address the problems with "blocking on drop does not work" here? https://without.boats/blog/io-uring/ The problem here is not with Rust's async design. It's that Rust has affine types and not linear types. This is not something that could have been solved with more work on the design. It is not that there was "a decision" to allow dropping tasks; it's a constraint on the design that the langua…

    Comment linking /blog/io-uring/

    on “Why asynchronous Rust doesn't work”
  8. Submitted Shipping Const Generics in 2020 as a story · 107 points

    HN discussion
  9. This post is completely and totally wrong. At least you got to ruin my day, I hope that's a consolation prize for you. There is NO meaningful connection between the completion vs polling futures model and the epoll vs io-uring IO models. comex's comments regarding this fact are mostly accurate. The polling model that Rust chose is the only approach that has been able to achieve single allocation state machines in Ru…

    Comment linking /tags/io-uring/

    on “Why asynchronous Rust doesn't work”
  10. Submitted References are like jumps as a story · 98 points

    HN discussion
  11. That was my first reaction too, but then I realized it's also value vs. reference types i.e. Java doesn't have value types and that makes the syntax a lot cleaner vs. C++, and I'm pretty sure Kotlin must be the same So you could still have ownership in a language with references only, and the syntax could be cleaner than Rust. In fact I think there was a post about just that: Notes on a Smaller Rust https://without.…

    Comment linking /blog/notes-on-a-smaller-rust/

    on “Rust: A Critical Retrospective”
  12. Submitted The problem of effects in Rust (2020) as a story · 92 points

    HN discussion
  13. I think some aspects of ownership are useful, e.g. move semantics and mutable/immutable references. withoutboats had a good post about a Rust-with-ownership-and-GC language a while back: https://without.boats/blog/revisiting-a-smaller-rust/

    Comment linking /blog/revisiting-a-smaller-rust/

    on “Rust Is Hard, Or: The Misery of Mainstream Programming”
  14. Submitted Asynchronous clean-up as a story · 87 points

    HN discussion
  15. NobodyNada · 2025-05-14Recommends
    This might not be exactly what you're looking for, but I really like "References are like jumps": https://without.boats/blog/references-are-like-jumps/

    Comment linking /blog/references-are-like-jumps/

    on “Flattening Rust’s learning curve”
  16. Submitted FuturesUnordered and the order of futures as a story · 43 points

    HN discussion
  17. Almost the entire early large scale adoption came from people writing async web services. From 2023: > In that regard, async/await has been phenomenally successful. Many of the most prominent sponsors of the Rust Foundation, especially those who pay developers, depend on async/await to write high performance network services in Rust as one of their primary use cases that justify their funding. https://without.boats/…

    Comment linking /blog/why-async-rust/

    on “Thoughts on Go vs. Rust vs. Zig”
  18. Submitted Thread-per-core as a story · 43 points

    HN discussion
  19. That's a really subtle version of the deadlock described in withoutboats FuturesUnordered post [0] When using “intra-task” concurrency, you really have to ensure that none of the futures are starving. Spawning task should probably be the default. For timeouts use tokio::select! but make sure all pending futures are owned by it. I would never recommend FuturesUnordered unless you really test all edge-cases. [0] https…

    Comment linking /blog/futures-unordered/

    on “Futurelock: A subtle risk in async Rust”
  20. Submitted Pinned Places as a story · 39 points

    HN discussion
  21. tene · 2021-04-22Recommends
    Having said all of that, I do agree that there are many programs where Rust's defaults don't add a lot of value, and it would be nice to have access to shared garbage-collected data without the syntax overhead of Arc<Mutex<T>> or crossbeam_epoch. I really like the discussion on resource types vs data types in this essay on higher-level rust-inspired languages: https://without.boats/blog/revisiting-a-smaller-rust/

    Comment linking /blog/revisiting-a-smaller-rust/

    on “Green vs. Brown Programming Languages”
  22. Submitted Coroutines and Effects as a story · 32 points

    HN discussion
  23. I have lots of issues with async/await, but this is my primary beef with async/await: Remember the Gang of Four book "Design Patterns"? It was basically a cookbook on how to work around the deficiencies of (mostly) C++. Yet everybody applied those patterns inside languages that didn't have those deficiencies . Rust can run multiple threads just fine --it's not Javascript. As such, it didn't have to use async/await.…

    Comment linking /blog/why-async-rust/

    on “Why choose async/await over threads?”
  24. Submitted Changing the Rules of Rust as a story · 22 points

    HN discussion
  25. My blog is located at https://without.boats Here are some relevant posts: https://without.boats/blog/a-four-year-plan/ https://without.boats/blog/poll-next/ https://without.boats/blog/asynchronous-clean-up/ https://without.boats/blog/pinned-places/

    Comment linking /blog/pinned-places/

    on “Rewriting Rust”
  26. Submitted Pinned Places as a story · 13 points

    HN discussion
  27. > If we could go back in time and have the rust project decide to never implement async, I wonder what rust would look like today. If withoutboats is right [1], then Rust would never have received the industry backing to be as successful as it is now. [1]: https://without.boats/blog/why-async-rust/ especially the section "Organizational considerations"

    Comment linking /blog/why-async-rust/

    on “Rewriting Rust”
  28. Submitted Revisiting a 'Smaller Rust' as a story · 13 points

    HN discussion
  29. These features are slow to be accepted for good reasons, not just out of some sort of pique. For example, the design space around combining `if let` pattern matching with boolean expressions has a lot of fraught issues around the scoping of the bindings declared in the pattern. This becomes especially complex when you consider the `||` operator. The obvious examples you want to use work fine, but the feature needs t…

    Comment linking /blog/pinned-places/

    on “Rewriting Rust”
  30. Submitted Asynchronous Clean-Up [in Rust] as a story · 8 points

    HN discussion

Search all of HN for without.boats

Linked by the same people?