Jörn Horstmann (@jhorstmann23) 's Twitter Profile
Jörn Horstmann

@jhorstmann23

Rust/Kotlin/Java/PostgreSQL Backend Developer in Berlin. He/Him

ID: 256707467

linkhttps://stackoverflow.com/users/139595/j%c3%b6rn-horstmann?tab=profile calendar_today23-02-2011 22:45:01

1,1K Tweet

187 Followers

560 Following

Jörn Horstmann (@jhorstmann23) 's Twitter Profile Photo

Agree with this assessment. Rust frameworks are far away from the convenience of something like springs ExceptionHandler advice (docs.spring.io/spring-framewo…), requiring everyone to reinvent the wheels.

Jörn Horstmann (@jhorstmann23) 's Twitter Profile Photo

How do y'all test your #rust #axum IntoResponse implementations? If I create a Response from serde_json::Value or Bytes I should be able to get the body and assert it in a unit test, without any async shenanigans, right?

Jörn Horstmann (@jhorstmann23) 's Twitter Profile Photo

Another pro-tip is that `[cfg(miri)]` implies a nightly rust version, so you can use unstable strict_provenance apis to silence warnings.

FFmpeg (@ffmpeg) 's Twitter Profile Photo

If we don't keep raising awareness of low-level programming skills, the skillset will disppear forever under a sea of SDKs, binary blobs and proprietary chips. C programming matters, assembly language matters.

Laurie Voss (@seldo) 's Twitter Profile Photo

There is no such thing as an apolitical company. "No politics at work" means "we support the status quo and will enforce it by firing people who disagree".

Andy Pavlo (@andypavlo.bsky.social) (@andy_pavlo) 's Twitter Profile Photo

Columnar file formats like Parquet/ORC are ubiquitous. Our VLDB paper with Xinyu Zeng + Huanchen Zhang + Wes McKinney studies their internals. TLDR: They're not optimized for modern hardware. Something new is needed. Paper: vldb.org/pvldb/vol17/p1… Code: github.com/XinyuZeng/Eval…

Columnar file formats like Parquet/ORC are ubiquitous. Our VLDB paper with <a href="/XinyuZeng218/">Xinyu Zeng</a> + <a href="/huanchenzhang/">Huanchen Zhang</a> + <a href="/wesmckinn/">Wes McKinney</a> studies their internals.

TLDR: They're not optimized for modern hardware. Something new is needed.

Paper: vldb.org/pvldb/vol17/p1…
Code: github.com/XinyuZeng/Eval…
Jörn Horstmann (@jhorstmann23) 's Twitter Profile Photo

Branchless decoding of uleb128 encoded integers, as used in thrift and parquet, using bmi2 instructions: rust.godbolt.org/z/4cdPEGc41

Jörn Horstmann (@jhorstmann23) 's Twitter Profile Photo

It wouldn't be fun implementing a specification, if the existing implementations agreed with that spec. Case in point: Collections of boolean values in #apache #thrift github.com/jhorstmann/com…

Jörn Horstmann (@jhorstmann23) 's Twitter Profile Photo

Parsing parquet metadata is inherently sequential because of the thrift encoding, but this writeup shows that significant performance improvements are possible. Metadata should not be a limiting factory, compared to http/object store requests and loading the actual data.

Jörn Horstmann (@jhorstmann23) 's Twitter Profile Photo

Fascinated by how some people think boolean expressions are somehow special and not just returning a different data type. The example of `if x==y then true else false` is well known, but I recently talked with someone who did not believe ` SELECT x==y, COUNT(*)` to be valid sql.

Jörn Horstmann (@jhorstmann23) 's Twitter Profile Photo

Radix sort implementation using AVX-512: github.com/jhorstmann/rad… I've been sitting on this code for some years, since I could never get it to outperform the scalar implementation, on either tigerlake or zen4. A tweet by Robert Clausecker reminded me to clean it up and publish.

Jörn Horstmann (@jhorstmann23) 's Twitter Profile Photo

Experimented with different ways of reading from files in #rust, without having to initialize buffers. Benchmarks show that initialization (memset) adds significant overhead. AFAIK current stable rust has no sound way to do this for arbitrary readers. github.com/jhorstmann/rus…

Jörn Horstmann (@jhorstmann23) 's Twitter Profile Photo

And just in time for my last post, there is a blog describing the issue with initializing buffers and also problems with nightly BorrowedBuf in much more detail: mina86.com/2025/rusts-wor…

Jörn Horstmann (@jhorstmann23) 's Twitter Profile Photo

Answer: [T] if the alignment of T is <= 16, str and CStr. All these are backed by a shared slice and only require incrementing the reference count. github.com/rust-lang/rust…

Jörn Horstmann (@jhorstmann23) 's Twitter Profile Photo

Up to 45% faster #parquet writing by staring at a profiler for a while and changing ~100 lines of code. Previous title was overly optimistic, the main branch was missing one commit to make it a fair comparison.