purplesyringa
purplesyringa.moe · Personal blog · on HN since 2024
purplesyringa writes technical posts on Rust, performance optimization, compression, floating point, and low-level programming quirks.
What HN saysHN commenters agree with her points on floats, enjoy her sense of humor, and discuss details such as the large webfont CSS file.
39HN people shared it
4linked it in comments
82stories submitted
2.6Kstory points
2 months agolast shared
2024people per year2026
Most-shared posts
- 1If I hear "design pattern" one more time, I'll go mad5 people · 23 points · first shared 2025 · 5 comments on HN
- 2Thoughts on Rust Hashing5 people · 13 points · first shared 2024 · 2 comments on HN
- 3The Expression Problem and Rust3 people · 14 points · first shared 2025 · discussion on HN
- 4Ntoh*/hton* is a bad API3 people · 5 points · first shared 2025 · discussion on HN
- 5An Ode to Bzip3 people · 5 points · first shared 2026 · discussion on HN
- 6Performance optimization is hard because it's fundamentally a brute-force task2 people · 303 points · first shared 2025 · 144 comments on HN
- 7JVM exceptions are weird: a decompiler perspective2 people · 257 points · first shared 2025 · 69 comments on HN
- 8Falsehoods programmers believe about null pointers2 people · 111 points · first shared 2025 · 104 comments on HN
- 9Any Python program fits in 30 characters2 people · 7 points · first shared 2024 · discussion on HN
- 10Recovering control flow structures without CFGs2 people · 7 points · first shared 2025 · 1 comments on HN
- 11Faster Practical Modular Inversion2 people · 6 points · first shared 2025 · discussion on HN
- 12Fenwick Layout for Interval Trees2 people · 6 points · first shared 2025 · discussion on HN
- 13Recovering Garbled Bitcoin Addresses2 people · 4 points · first shared 2024 · discussion on HN
- 14WASM is not quite a stack machine2 people · 4 points · first shared 2026 · discussion on HN
- 15Thoughts on "SIMD in Pure Python" – purplesyringa's blog2 people · 4 points · first shared 2026 · discussion on HN
What HN people wrote when they linked it
purplesyringa · 2026-07-29
Thank you! I completely agree with this, floats are treated as a lot more magical than they actually are. I myself often rely on their exact guarantees for fun tricks (e.g. fast precise int<->float conversion: https://purplesyringa.moe/blog/fast-limited-range-conversion-between-i… But while IEEE-754 is very precise, some subtleties arise when you add library functions to the mix -- many libm's and userland libraries don't guarantee 0.5 ulp precision for certain operations and don't document the guaranteed precision either, at which point you're left guessing and saying "well, I guess I should treat floats as magic in this case after all". I added "it's not imprecision" to step around this whole question.
mananaysiempre · 2026-02-21
> Then, when it fails [...], you can either poke it in the right ways or change your program in the right ways so that it works for you again. This is a horrible way to program; it’s all alchemy and guesswork and you need to become deeply specialized about the nuances of a single [...] implementation
In that post, the blanks reference a compiler’s autovectorizer. But you know what they could also reference? An aggresively opaque and undocumented, very complex CPU or GPU microarchitecture. (Cf. https://purplesyringa.moe/blog/why-performance-optimization-is-hard-wo…
thaliaarchi · 2024-10-12
That feeling seems common in hindsight. Everything seems easier, once all the problems have been solved. Related, I enjoy the author's sense of humor:
> I made a prototype and, lo and behold, it was in fact slow, as predicted. (I’m smart.)
And in another article[0], describing an inefficient collision algorithm:
> Mojang’s decision never crossed my mind. I guess I’m not a real programmer.
[0]: https://purplesyringa.moe/blog/ru/minecraft-compares-arrays-in-cubic-t…
lxgr · 2024-09-07
Now I got curious, and there's also a 400 kB CSS file to go with it: https://purplesyringa.moe/fonts/webfont.css
I'm not up to date on web/font development – does anybody know what that does?