purplesyringa's blog

purplesyringa's blog

Alisa Sireneva

Hi! 👋 I'm Alisa Sireneva (she/her), a software developer and blogger from Moscow. I specialize in performance optimization and systems programming. I also have experience with security, compression, and decentralized systems. My primary goal as a writer is to teach the concepts I regularly apply through accessible content.

Latest Posts

We built the best "Bad Apple!!" in Minecraft

Demoscene is the art of pushing computers to perform tasks they weren’t designed to handle. One recurring theme in demoscene is the shadow-art animation “Bad Apple!!”. We’ve...

Minecraft сравнивает массивы за куб

Коллизии в играх обнаруживаются тяжелыми алгоритмами. Для примера попробуйте представить себе, насколько сложно это для просто двух произвольно повернутых кубов в пространстве....

WebP: The WebPage compression format

I want to provide a smooth experience to my site visitors, so I work on accessibility and ensure it works without JavaScript enabled. I care about page load time because some...

Division is hard, but it doesn't have to be

Developers don’t usually divide numbers all the time, but hashmaps often need to compute remainders modulo a prime. Hashmaps are really common, so fast division is useful. For...

I sped up serde_json strings by 20%

I have recently done some performance work and realized that reading about my experience could be entertaining. Teaching to think is just as important as teaching to code, but...

The sentinel trick

The sentinel trick underlies a data structure with the following requirements: Read element by index in O(1), Write element by index in O(1), Replace all elements with a given...

You might want to use panics for error handling

Rust’s approach to error handling comes at a cost. The Result type often doesn’t fit in CPU registers, and callers of fallible functions have to check whether the returned value...

У base64 есть неподвижная точка

$ </dev/urandom base64 | base64 | base64 | base64 | base64 | base64 | base64 | base64 | base64 \ | base64 | base64 | base64 | base64 | base64 | base64 | base64 | base64 | base64...

I thought I was smart enough to play with fire

blazingio cuts corners by design. It keeps the constant factor small and uses long forgotten algorithms people used before processors supported SIMD and integer division. But...

Recovering garbled Bitcoin addresses

ZeroNet is a decentralized network that enables dynamic sites, such as blogs and forums, unlike popular content-addressed storage networks that came later. Sites aren’t...
Shuffle Search Random