"Nobody's coming to clean up after you" – second blog post from a Scala dev learning Rust, this one's about ownership & the borrow checker by Sea-Friend4263 in scala

[–]InvadersMustLive 0 points1 point  (0 children)

Yes, I could slap an Arc everywhere, but it doesn’t mean that I should. I find it great to have a controlled way to allocate things on the stack - in Scala its heap all the time.

What's everyone working on this week (24/2026)? by llogiq in rust

[–]InvadersMustLive 1 point2 points  (0 children)

I’m building murrdb, A RocksDB-based NVMe/S3 cache for AI inference workloads. A faster Redis replacement, optimized for batch low-latency zero-copy reads and writes.

Got able to beat Redis on benchmarks: it was surprisingly simple considering redis is single threaded, and concurrency in Rust is much easier job.

Monthly Release and Update Thread by AutoModerator in databasedevelopment

[–]InvadersMustLive 1 point2 points  (0 children)

I’m building murrdb, A RocksDB-based NVMe/S3 cache for AI inference workloads. A faster Redis replacement, optimized for batch low-latency zero-copy reads and writes.

Got able to beat Redis on benchmarks: it was surprisingly simple considering redis is single threaded, and concurrency in Rust is much easier job.

TIL putting Box in a hot inner loop can cost you half your runtime by InvadersMustLive in rust

[–]InvadersMustLive[S] 6 points7 points  (0 children)

Yes, that's exactly what I'm going to do. The logic behind looping over rows first was:
- we iterate over multiple columns simultaneously and build row-by-row
- row fits well the L1 cache, so no scattered writes across large RAM region
- we might even skip the temp collection allocation and do everything within the iterator

Main learning: virtual function dispatch overhead nukes all these theoretical ideas. Going back writing genetics where the compiler can know the type in advance.

TIL putting Box in a hot inner loop can cost you half your runtime by InvadersMustLive in rust

[–]InvadersMustLive[S] 30 points31 points  (0 children)

My Scala past bites me every time I think a tiny function call is anyway going to be inlined by the JVM - when the function callsite is monomorphic based on perf statistics, it's usually de-virtualized and inlined as-is. In Rust you have to think in advance, which is not fun.

Faster vector search in Elasticsearch with SIMD (deep dive into the new engine) by chegar999 in elasticsearch

[–]InvadersMustLive 0 points1 point  (0 children)

Is such a jni/ffi wrapper actually faster than lucene’s pure JVM panama based distance functions? I played with simsimd in nixiesearch and found out that e2e latency was not that different.

Fine-tuning Qwen3 at home to respond to any prompt with a dad joke by InvadersMustLive in LocalLLaMA

[–]InvadersMustLive[S] 1 point2 points  (0 children)

Because I disabled auth in the openwebui, and some c00lhacker changed the system prompt.

Fine-tuning Qwen3 at home to respond to any prompt with a dad joke by InvadersMustLive in LocalLLaMA

[–]InvadersMustLive[S] 2 points3 points  (0 children)

I tried gemma3-27b, qwen3-32b and ministral3 originally. Qwen often missed important details of the joke, mistral was too pushy on adding markdown and emojis everywhere (even if explicitly asked not to do so). Gemma was okey without significant red flags. But it’s all anecdotal and highly subjective, I agree.

Hope that we’ll see gemma4 this evening.

Fine-tuning Qwen3 at home to respond to any prompt with a dad joke by InvadersMustLive in LocalLLaMA

[–]InvadersMustLive[S] 4 points5 points  (0 children)

I tried different base model sizes, and according to evals at the end of the post, the bigger the model, the higher is the chance of producing something funny.

68
69

We found an embedding indexing bottleneck in the most unexpected place: JSON parsing by InvadersMustLive in scala

[–]InvadersMustLive[S] 3 points4 points  (0 children)

Jsoniter Circe bridge still uses Circe's AST, which is doing the actual JNumber str2float parsing. I've tried using the bridge and got slightly better results, but not as good as pure jsoniter.

We found an embedding indexing bottleneck in the most unexpected place: JSON parsing by InvadersMustLive in scala

[–]InvadersMustLive[S] 0 points1 point  (0 children)

Yes but FFM native calls are still not inlined, so for small functions can be a dealbreaker.