Top all-time · #5834
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.
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?
- Golang and Rustlang Memory Safety (2016)4 people · 4 mentions · first linked 2016-12-29
- Beyond Memory Safety with Types4 people · 4 mentions · first linked 2016-05-30
- The Cognitive Burden of Garbage Collection vs. Move Semantics (2023)2 people · 2 mentions · first linked 2023-09-24
- /2016/05/30/beyond-memory-safety-with-types2 people · 2 mentions · first linked 2017-01-18
What Hacker News says?
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”Submitted Beyond Memory Safety with Types as a story · 20 points
HN discussionExample: 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”Submitted A Microservice in Rust (With Actors) as a story · 4 points
HN discussionIf 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”Submitted Golang and Rustlang Memory Safety (2016) as a story · 4 points
HN discussionAnother 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)”Submitted The Cognitive Burden of Garbage Collection vs. Move Semantics (2023) as a story · 3 points
HN discussionIn 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)”Submitted Golang and Rustlang Memory Safety as a story · 3 points
HN discussionNot 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”Submitted Beyond Memory Safety with Types as a story · 3 points
HN discussionThere 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”Submitted Golang and Rustlang Memory Safety as a story · 2 points
HN discussionhttps://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)”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”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”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””