Top all-time · #1857
Code Capsule | A blog by Emmanuel Goossaert
Personal blog · codecapsule.com · on HN as emgoprogrammingcareer
Code Capsule | A blog by Emmanuel Goossaert is a personal blog at codecapsule.com about programming and career. Since 2013, 42 different Hacker News readers have linked it 48 times, most often “Coding for SSDs”. It is still writing: the last post was on 2026-10-04, and you can follow it by feed.
Software and thoughts. A weblog by Emmanuel Goossaert.
Most-linked posts?
- Coding for SSDs6 people · 6 mentions · first linked 2014-02-20
- Robin Hood hashing: backward shift deletion (2013)5 people · 6 mentions · first linked 2015-06-23
- What every programmer should know about solid-state drives4 people · 4 mentions · first linked 2015-02-14
- What every programmer should know about solid-state drives (2014)3 people · 3 mentions · first linked 2021-09-22
- Coding for SSDs3 people · 3 mentions · first linked 2021-09-08
- /2014/02/12/coding-for-ssds-part-5-access-patterns-and-system-optimizations/2 people · 2 mentions · first linked 2016-11-01
- Implementing a Key-Value Store (2012)2 people · 2 mentions · first linked 2015-04-23
- How to implement an algorithm from a scientific paper2 people · 2 mentions · first linked 2013-01-11
What Hacker News says?
Implementing a Key-Value Store http://codecapsule.com/2012/11/07/implementing-a-key-value-s... Let's Make a Voxel Engine https://sites.google.com/site/letsmakeavoxelengine/
Comment linking /2012/11/07/implementing-a-key-value-store-part-1-what-are-key-value-stores-and-why-implement-one/
on “Ask HN: “Write your own” or “Build your own” software projects”Submitted How to implement an algorithm from a scientific paper as a story · 206 points
HN discussionOne thing I'm still puzzled about SSD over-provisioning, which is also mentioned by the tutorial ( https://codecapsule.com/2014/02/12/coding-for-ssds-part-4-ad... ) recommended by the article: > A drive can be over-provisioned simply by formatting it to a logical partition capacity smaller than the maximum physical capacity. The remaining space, invisible to the user, will still be visible and used by the SSD contro…
Comment linking /2014/02/12/coding-for-ssds-part-4-advanced-functionalities-and-internal-parallelism/
on “What every programmer should know about SSDs”Submitted What every programmer should know about solid-state drives (2014) as a story · 170 points
HN discussionI read the section on sequential numbers as just illustrating a worst-case scenario of the case that could happen with either a naive hasher or malicious input. As far as I can see all the graphs but one use random numbers, so hashing won't add anything given good randomness. I've heard good arguments why linear probing should perform as well as quadratic probing when using Robin Hood bucket stealing, e.g. http://co…
Comment linking /2013/11/11/robin-hood-hashing/
on “I Wrote My Fastest Hashtable”Submitted Coding for SSDs as a story · 168 points
HN discussionFlash memory is different from a regular drive, and it's to do with how it writes. You can't alter a single bit, you must rewrite the whole block and those can be anywhere from 256KB to 4MB or more. http://codecapsule.com/2014/02/12/coding-for-ssds-part-2-arc... Adding new bits is cheap, though, so if you can come up with an append-only strategy for your system and periodically combine those into a new, pristine ver…
Comment linking /2014/02/12/coding-for-ssds-part-2-architecture-of-an-ssd-and-benchmarking/
on “Real world SSD wearout”Submitted What every programmer should know about solid-state drives as a story · 135 points
HN discussionA more detailed explanation of "backward shift deletion": https://codecapsule.com/2013/11/17/robin-hood-hashing-backwa...
Comment linking /2013/11/17/robin-hood-hashing-backward-shift-deletion/
on “How to implement a hash table in C”Submitted Implementing a Key-Value Store (2012) as a story · 49 points
HN discussionI found the following link to be an interesting read on the topic: http://codecapsule.com/2014/10/18/implementing-a-key-value-s... The author also has a 6-part series on programming for SSDs: here's a more descriptive blog post for general SSD access patterns and optimizations: http://codecapsule.com/2014/02/12/coding-for-ssds-part-5-acc...
Comment linking /2014/02/12/coding-for-ssds-part-5-access-patterns-and-system-optimizations/
on “Damn Cool Algorithms: Log structured storage (2009)”Submitted Learn Street Epistemology to Deal with Difficult People at Work as a story · 19 points
HN discussioni found this ( https://codecapsule.com/?s=hashing ) to be quite instructive as an overview of various hashing techniques. check it out for some fun ?
Comment linking /?s=hashing
on “Classical data structures that can outperform learned indexes (2018)”Submitted Coding for SSDs as a story · 16 points
HN discussionIn addition to the answer from rndgermandude (which is also a reason why accessing a data structure in RAM, even in a world without cache lines, would be faster and more efficient if stored in a linear array rather than a tree), SSDs are themselves a complex data structure mapping data into erasure blocks in an attempt to minimize wear on the flash memory and increase efficiency. If the size of your fragments is sma…
Comment linking /2014/02/12/coding-for-ssds-part-5-access-patterns-and-system-optimizations/
on “Windows file system compression had to be dumbed down”Submitted What every programmer should know about solid-state drives (2014) as a story · 14 points
HN discussionThe post mentions using tombstones for deletion, but I was under the impression that the variance benefits of Robin Hood hashing weren't realized unless you performed a backwards shift on the remaining elements instead of using a tombstone. See these posts for more information: http://codecapsule.com/2013/11/11/robin-hood-hashing/ http://codecapsule.com/2013/11/17/robin-hood-hashing-backwar... Unfortunately there's…
Comment linking /2013/11/17/robin-hood-hashing-backward-shift-deletion/
on “Robin Hood Hashing should be the default hash table implementation (2013)”Submitted Implementing a Key-Value Store as a story · 9 points
HN discussionA variant of this is the default for Rust's HashMap. http://codecapsule.com/2013/11/17/robin-hood-hashing-backwar...
Comment linking /2013/11/17/robin-hood-hashing-backward-shift-deletion/
on “Robin Hood Hashing should be the default hash table implementation (2013)”Submitted Robin Hood hashing: backward shift deletion (2013) as a story · 6 points
HN discussionWhat's interesting to me is that if you read the summary ( http://codecapsule.com/2014/02/12/coding-for-ssds-part-6-a-s... ), most of the recommendations are exactly the same as when programming against a traditional spinning-oxide hard drive: read and write entire blocks if you can, combine block writes, &c. It's nice to know that all that work on high-performance IO in databases doesn't need to be thrown away just…
Comment linking /2014/02/12/coding-for-ssds-part-6-a-summary-what-every-programmer-should-know-about-solid-state-drives/
on “Coding for SSDs”Submitted A Summary – What every programmer should know about solid-state drives as a story · 3 points
HN discussionFrom the docs page [0] for std::collections::HashMap, Rust uses backwards shift deletion [1] instead of the tombstone method. [0] https://doc.rust-lang.org/std/collections/struct.HashMap.htm... [1] http://codecapsule.com/2013/11/17/robin-hood-hashing-backwar...
Comment linking /2013/11/17/robin-hood-hashing-backward-shift-deletion/
on “Rust Standard Hash Table Could Go Quadratic”Submitted Coding for SSDs as a story · 3 points
HN discussionDepends on the implementation. Some algorithms[1] have a load factor no more than 0.80 before insert/lookup performance starts to degrade significantly. Others, like the algorithm used in Rust[2], can achieve load factors in excess of 0.98 without breaking a sweat. [1] http://netjs.blogspot.com.au/2015/05/how-hashmap-internally-... [2] - http://codecapsule.com/2013/11/17/robin-hood-hashing-backwar...
Comment linking /2013/11/17/robin-hood-hashing-backward-shift-deletion/
on “In-memory hash tree implementation”Submitted Skills Map of Senior Tech Career Progression as a story · 3 points
HN discussionJava still uses a linked list chaining until a threshold is met (8 currently) which it then switches the bucket to a tree. I wish java could switch to open address hashing, but without value types it wouldn't help much (there's work on adding them: http://cr.openjdk.java.net/~jrose/values/values-0.html ). Linear probing would likely be better than cuckoo hashing from a cpu cache perspective (all locations closer in…
Comment linking /2013/11/17/robin-hood-hashing-backward-shift-deletion/
on “Hash tables with open addressing”Submitted Planned Reading: The Trick for Reading Nonfiction as a story · 3 points
HN discussionCompanies generally do not publish their algorithms, unless they are filing for a patent. I came across this great blog post a while back that will give you a pretty solid foundation for NAND management: http://codecapsule.com/2014/02/12/coding-for-ssds-part-1-int... . You can google more if you find any of the sections interesting. Yes, I did work for Micron! I'm doing data science now, though, so I'm not currently…
Comment linking /2014/02/12/coding-for-ssds-part-1-introduction-and-table-of-contents/
on “NAND Flash: Dealing with a Flawed Medium”Submitted Coding for SSDs (2014) as a story · 3 points
HN discussion