Ticki
ticki.github.io · Personal blog · on HN since 2016
Ticki is a Rust programmer who writes about data structures, compression, hashing, concurrency, and the Redox-related TFS filesystem.
What HN saysHN links it for explanations of LZ4 and SeaHash, which one commenter calls very fast, and for his post on leaving open source.
27HN people shared it
9linked it in comments
24stories submitted
1.3Kstory points
7 months agolast shared
2016people per year2026
Most-shared posts
- 1Skip Lists Done Right5 people · 456 points · first shared 2016 · 82 comments on HN
- 2Fearless concurrency with hazard pointers4 people · 11 points · first shared 2017 · discussion on HN
- 3How LZ4 works (2016)3 people · 178 points · first shared 2017 · 14 comments on HN
- 4Why I'm leaving Open Source3 people · 115 points · first shared 2018 · 72 comments on HN
- 5SeaHash: Explained2 people · 143 points · first shared 2016 · 55 comments on HN
- 6Making Terminal Applications in Rust with Termion2 people · 4 points · first shared 2016 · 1 comments on HN
- 7A Hoare Logic for Rust1 people · 193 points · first shared 2016 · 43 comments on HN
- 8A Critique of Rust's `std::collections`1 people · 85 points · first shared 2016 · 60 comments on HN
- 9Lambda crabs, part 1: A mathematical introduction to lifetimes and regions1 people · 75 points · first shared 2016 · 20 comments on HN
- 10An Atomic Hash Table1 people · 14 points · first shared 2017 · 4 comments on HN
- 11Why Rust's `std::collections` is absolutely fantastic1 people · 4 points · first shared 2016 · discussion on HN
- 12You Are (Probably) Doing Login Systems Wrong1 people · 3 points · first shared 2017 · discussion on HN
- 13Designing a good non-cryptographic hash function1 people · 2 points · first shared 2017 · 1 comments on HN
- 14Collision Resolution with Nested Hash Tables1 people · 1 points · first shared 2017 · discussion on HN
- 15A general construction for rolling hash functions1 people · 1 points · first shared 2017 · discussion on HN
What HN people wrote when they linked it
gens · 2021-01-27
It is used, and most every other compression technique was/is used in video games.
I was thinking of using LZ4, but it doesn't really work that great on floating point, and images are already compressed (png, jpg, and even BCn, can't be compressed much further). So idk. Good thing about lz4 is that it's very simple[0] and probably faster then memcpy().
http://ticki.github.io/blog/how-lz4-works/
luminati · 2019-07-23
As you pointed out, since this is an adversarial use case, a robust cryptographic hash function is the way to go. [For a non-cryptographic Hash function, SeaHash [1] would be the best choice, which is violently fast!]
BLAKE2b would have been the perfect choice given the adversarial nature, as it much secure and faster than MD5. [2]
MD5 is so broken, it's really poor choice for any use case - cryptographic (fundamentally broken) or not (fundamentally slow).
[1] http://ticki.github.io/blog/seahash-explained/
[2] https://leastauthority.com/blog/BLAKE2-harder-better-faster-stronger-t…
akanet · 2021-01-27
I found this blog post describing some of the mechanics, but I am still interested in reading how this may be implemented branchlessly.
http://ticki.github.io/blog/how-lz4-works/
voodootrucker · 2019-07-17
The really frustrating part is that linked lists are actually bad practices in most instances nowadays [0]. And skiplists are better than trees for many in-memory uses [1].
Not that you would usually implement such a thing yourself anyway. So these leetcode style interviews are actively selecting for people who practice 40 year old CS solutions that don't work well on modern hardware, and selecting against folks with real-world experience.
[0] https://www.youtube.com/watch?v=YQs6IC-vgmo
[1] https://ticki.github.io/blog/skip-lists-done-right/
est31 · 2019-01-29
TFS is very cool. Too sad that ticki has stopped working on it: http://ticki.github.io/blog/why_im_leaving_open_source/
Due to this, I don't know whether it will be ready at all.
jasode · 2017-05-21
I read the TFS github landing page and it didn't explain what the 'T' stood for. I then noticed the author's name is "Ticki"[1]. Therefore, I can only guess that TFS stands for "Ticki's File System".
[1]http://ticki.github.io/about/
josteink · 2018-05-07
Replying to a flagged/deleted comment from "nukeop":
> From the man who brought you "The Case for Non-Binary Genders" last year. No thanks.
Link for the lazy: https://ticki.github.io/blog/the-case-for-non-binary-genders/
While this comment may not be directly "productive", I think the immediate response to it, and in general response to the topic at hand is rather instructive.
It shows a general negativity (on both sides) which is obviously detracting from the positive energy and enthusiasm associated with (and often crucial for) sustainable open-source software projects.
For all the good various diversity-initiatives has intended to do, I must admit I've yet to see any proof that these actually work and give the promised results. It's their claim and thus their responsibility to prove.
Faced with constant reminders (like this) of how they keep causing toxic debates, which again and again causes people to leave (or avoid joining), it's easy to assume that right now these well intended initiatives, executed as they are, represent a net negative.
Let's not make FOSS a matter of gender-identities and diversity, but again focus on the product, the commits, the code and the incremental improvements. Towards reaching a common goal, together.
We should all focus on the good things which are uniting instead of letting a select few try to force a divisive agenda top-down upon a audience we know will give a mixed reception.
Let's not kill something good with something…
albertoleal · 2016-06-07
Part 2 here: http://ticki.github.io/blog/lambda_crabs_2/
ignoramous · 2026-04-19
> Skiplists also win over balanced BSTs when it comes to concurrent access.
Balanced Skiplists perform better than Skiplists which may skew otherwise (but balancing itself is expensive). Also, I've have found that maintaining cursors (at different points in a doubly-linked skiplist with million+ entries) instead of always looking for elements from the root/head is an even bigger win.
> ConcurrentSkipListMap has been in the standard library since Java 6 for exactly this reason and it holds up well under high contention
An amusing observation I lifted from OCaml's implementation (which inturn quotes Donald Knuth) that the MSBs of PRNG values have more "randomness" than LSBs (randomness affects "balance"): https://github.com/ocaml/ocaml/blob/389121d3/runtime/lf_skiplist.c#L86
---
Some neat refs from our codebase:
- Skip lists: Done right (2016), https://ticki.github.io/blog/skip-lists-done-right / https://archive.is/kwhnG
- An analysis of skip lists, https://eugene-eeo.github.io/blog/skip-lists.html / https://archive.is/ffCDr
- Skip lists, http://web.archive.org/web/20070212103148/http://eternallyconfuzzled.c… / https://archive.is/nl3G8