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 · #5834

I

InsanityBit

Personal blog · insanitybit.github.ioprogrammingsecurity

InsanityBit is a personal blog at insanitybit.github.io about programming and security. Since 2016, 14 different Hacker News readers have linked it 19 times, most often “Golang and Rustlang Memory Safety (2016)”. It is still writing: the last post was on 2025-11-22, and you can follow it by feed.

Visit the blog
19mentions?
14HN people?
2016–2025first – last linked?
Links on Hacker News per year · peak 5 in 2017

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

Why HN links it

HN readers link this blog for posts on using Rust's type system to encode state machines (affine types, typestates) and for posts about the author's Grapl project and deployments. Most comments cite it as an example.

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

Most-linked posts?

  1. Golang and Rustlang Memory Safety (2016)
    4 people · 4 mentions · first linked 2016-12-29
  2. Beyond Memory Safety with Types
    4 people · 4 mentions · first linked 2016-05-30
  3. The Cognitive Burden of Garbage Collection vs. Move Semantics (2023)
    2 people · 2 mentions · first linked 2023-09-24
  4. /2016/05/30/beyond-memory-safety-with-types
    2 people · 2 mentions · first linked 2017-01-18

What Hacker News says?

  1. I think what you're getting at is Grapl's identification process. It's timestamp based, primarily, at the moment, yes. A bit of the algorithm is described here: https://insanitybit.github.io/2019/03/09/grapl More specifically Grapl defines a type of identity called a Session - this is an ID that is valid for a time, such as a PID on every major OS. Sessions are tracked or otherwise guessed based on logs, such as pro…

    Comment linking /2019/03/09/grapl

    on “Give Me Back My Monolith”
  2. Submitted Beyond Memory Safety with Types as a story · 20 points

    HN discussion
  3. Example: http://insanitybit.github.io/2016/05/30/beyond-memory-safety... TL;DR: compile time checking that your state machine transition is correct.

    Comment linking /2016/05/30/beyond-memory-safety-with-types

    on “Rust vs. Go”
  4. Submitted A Microservice in Rust (With Actors) as a story · 4 points

    HN discussion
  5. reificator · 2019-03-03Recommends
    If you're interested in this, you may want to take a look at this article as well: https://insanitybit.github.io/2016/05/30/beyond-memory-safet... EDIT: Sorry, I remembered the site name and saw IMAP in the title, but ended up clicking the wrong article. Updated the above link from https://insanitybit.github.io/2016/06/28/implementing-an-ima...

    Comment linking /2016/06/28/implementing-an-imap-client-in-rust

    on “Session Types for Rust”
  6. Submitted Golang and Rustlang Memory Safety (2016) as a story · 4 points

    HN discussion
  7. Another example, implementing IMAP with Rust's affine types. https://insanitybit.github.io/2016/05/30/beyond-memory-safet...

    Comment linking /2016/05/30/beyond-memory-safety-with-types

    on “Typestates in Rust (2018)”
  8. Submitted The Cognitive Burden of Garbage Collection vs. Move Semantics (2023) as a story · 3 points

    HN discussion
  9. In contrast, Go programs are not compiled with ASLR/PIE by default. Go's developers do not want to give up the debuggability of deterministic address space layout, comparing ASLR's extra protection to "seat belts in restaurants" because Go fixes these vulnerabilities at the language level. https://rain-1.github.io/golang-aslr.html https://insanitybit.github.io/2016/12/28/golang-and-rustlang...

    Comment linking /2016/12/28/golang-and-rustlang-memory-safety

    on “Rust and SPARK: Software Reliability for Everyone (2017)”
  10. Submitted Golang and Rustlang Memory Safety as a story · 3 points

    HN discussion
  11. Not easily. Rust's type system has limits, and what you're talking about is something you'd probably want dependent types for. But it can catch lots of other logic errors. The approach I have used in both mypy and rust is to encode state transitions into types. It's more elegant in Rust, and safer as well, but even with mypy it means I could be very sure about certain properties of my service (it was a sensitive ser…

    Comment linking /2016/05/30/beyond-memory-safety-with-types

    on “Comparing Pythagorean triples in C++, D, and Rust”
  12. Submitted Beyond Memory Safety with Types as a story · 3 points

    HN discussion
  13. There are ways to prevent some logic/protocol problems at the type level using rust: https://hoverbear.org/2016/10/12/rust-state-machine-pattern/ https://blog.tarn-vedra.de/posts/phantom-types-for-safe-apis... https://insanitybit.github.io/2016/05/30/beyond-memory-safet... https://scribbles.pascalhertleif.de/elegant-apis-in-rust.htm... Some libraries use such features to prevent certain kinds of nonce-reuse during e…

    Comment linking /2016/05/30/beyond-memory-safety-with-types

    on “Rust is Software's Salvation”
  14. Submitted Golang and Rustlang Memory Safety as a story · 2 points

    HN discussion
  15. https://insanitybit.github.io/2018/11/05/deploying-grapl-wit... Here's a post on how I use AWS's "Cloud Development Kit" to do my deployments. Builds are through Docker. Source code: https://github.com/insanitybit/grapl

    Comment linking /2018/11/05/deploying-grapl-with-aws-cdk

    on “Rust in Production (2018)”
  16. A linear type system isn't strictly necessary for this pattern; this is a common trick in Rust, which only has affine types: http://insanitybit.github.io/2016/05/30/beyond-memory-safety... . Indeed, it's lovely for validating state machines at compile time.

    Comment linking /2016/05/30/beyond-memory-safety-with-types

    on “Encode state transitions in types using linear types”
  17. I'll take almost any cost for extension traits. Going back to Python this is part of what I miss most. There is no way to add methods to a type in Python that mypy understands. You have to create a new type. This leads to code that is very difficult to extend and pushes you towards inheritance. I talk a bit about this here: https://insanitybit.github.io/2020/07/19/intersection-types-... For me, this became a huge pr…

    Comment linking /2020/07/19/intersection-types-in-python

    on “Rust extension traits, greppability and IDEs”
  18. I wrote a bit about this. After years of having move semantics and borrow checking I don't really agree. I find that GCs are way way harder to reason about. They make it very hard to know when I'm sharing something or not, when something can be mutated, when it will be copied, etc. And then I still have to clean up other resources with a whole other, separate system. At the end of the day I find languages like Java…

    Comment linking /2023/06/09/Java-GC-Rust

    on “Mark Russinovich: “Working towards enabling Windows driver development in Rust””

Search all of HN for insanitybit.github.io

Linked by the same people?