Ragnar {Groot Koerkamp}
@curiouscoding.nl
910 followers 100 following 980 posts
PhD on high troughput bioinformatics @ ETH Zurich; IMO, ICPC, Xoogler, Rust, road-cycling, hiking, wild camping, photography
Posts Media Videos Starter Packs
curiouscoding.nl
no luck with that yet either ... and also not portable anymore.

Ah well, the lesson here: don't benchmark tiny unrealistic hot loops :)
curiouscoding.nl
How do I reliably get rustc/LLVM to put this `sum` accumulator into a register... wasting too much time on this
curiouscoding.nl
"Interesting" codegen issue:

let mut sum = u32x8::ZERO;
for x in it { sum += x; }
black_box(sum);

accumulates `sum` in L1, while `black_box(&sum)` puts it in a register and is 3x faster because reading+writing L1 is slow in a tight loop.

I wonder why rustc/LLVM don't converge to the same here...
curiouscoding.nl
That reminds me of an interactive BWT searching visualization I made here: (change 'algorithm' to BWT first)

curiouscoding.nl/posts/alg-viz/
Screenshot of my BWT visualization.
curiouscoding.nl
Nice blogpost on how reading from L1 can be slow, and if you can anticipate the value, it can be better to speculate on it:

value = expected_value;
let real_value = read_from_L1();
if real_value != expected_value {
value = real_value;
}

mazzo.li/posts/value-...
Beating the L1 cache with value speculation
mazzo.li
Reposted by Ragnar {Groot Koerkamp}
sunshowers.io
there is SO MUCH publicly useful content and virtually none of it is indexed by search engines. the private content shouldn't be indexed but is similarly hard to follow. There's so much going on at all times
Reposted by Ragnar {Groot Koerkamp}
benlangmead.bsky.social
New tool "bwt-svg" for making illustrations of the BWT and the many auxiliary arrays and other structures related to it. Pyodide-based no-installation-necessary interface here: benlangmead.github.io/bwt-svg/. (H/t to @robert.bio for pointing me to pyodide!) Full repo: github.com/benlangmead/....
Illustration of Burrows-Wheeler Transform and many auxiliary structures from the input string how$now$brown$cow$#
curiouscoding.nl
Sooo, the allocating part of `Vec::resize()` is explicitly marked `#[cold]` to prevent inlining... But that's now explicitly working against me in a `buf.clear(); buf.resize(n);` situation.
Instead I have to `if buf.is_empty() { *buf = vec![0; n]; }`, which _does_ inline.
Reposted by Ragnar {Groot Koerkamp}
scylladb.com
How can you achieve 40x faster binary search? @curiouscoding.nl's #P99CONF talk will dive into everything that modern CPUs have to offer in order to gain 40x increased throughput over the Rust standard library implementation. Save your spot here > www.p99conf.io?latest_sfdc_...

#ScyllaDB
Reposted by Ragnar {Groot Koerkamp}
mara.bsky.social
General maintenance is one of the most fundamental jobs in an open source project, but is one of the hardest to get paid for. Adding new features gets you promoted; keeping the lights on does not.

But everything depends on it. Code needs reviews, cleanups, docs. New contributors need mentors, etc.
Reposted by Ragnar {Groot Koerkamp}
mara.bsky.social
I'm excited to share what I've been working on with @erikjee.bsky.social: RustNL's #rustlang Maintainers Fund!

Many people and companies contributing to Rust, but there are fewer and fewer paid positions for general maintenance (reviews,cleanups,etc). We need to fix that.

bsky.app/profile/rust...
rustnl.bsky.social
We're excited to announce a new initiative to support the Rust Project, our Rust Maintainers Fund!

We are setting out to employ 6 full-time maintainers and 6 interns in 2026 to make sure #rustlang is well maintained and bugs and contributions get the attention they need.

Read more: rustnl.org/fund
RustNL - Rust Maintainers Fund - Keeping the Rust Project maintained so you can focus on building reliable software
Reposted by Ragnar {Groot Koerkamp}
rustnl.bsky.social
We're excited to announce a new initiative to support the Rust Project, our Rust Maintainers Fund!

We are setting out to employ 6 full-time maintainers and 6 interns in 2026 to make sure #rustlang is well maintained and bugs and contributions get the attention they need.

Read more: rustnl.org/fund
RustNL - Rust Maintainers Fund - Keeping the Rust Project maintained so you can focus on building reliable software
Reposted by Ragnar {Groot Koerkamp}
davidho.bsky.social
Ok, since many people are obviously not reading the article, here's a pertinent figure from it showing the top actions to reduce emissions.
A horizontal bar chart titled “19 climate-friendly choices, ranked” shows actions individuals can take to reduce their carbon footprint, ordered from most to least impactful. The x-axis represents projected impact in tons of CO₂ equivalent per capita per year (tCO₂e/cap/yr), ranging from 0 to about 2.5. Each action is color-coded by sector: transportation (blue), energy (orange), and food (green).

Go car-free – highest impact (blue bar extending to about 2.5 tCO₂e).

Fly less (blue, about 1.5).

Shift to renewable home energy (orange, about 1.4).

Switch to EV or hybrid car (blue, about 1.2).

Go vegan (green, about 1.0).

Walk, bike, or take transit more (blue).

Make energy-efficient renovations (orange).

Use clean cooking equipment (orange).

Go vegetarian (green).

Shift driving habits (e.g., carpooling) (blue).

Increase telecommuting (blue).

Shift to regional/seasonal diet (green).

Move to energy-efficient home (orange).

Decrease food waste (green).

Eat less meat (green).

Use less energy at home (orange).

Reduce packaged food, dining out (green).

Use energy-efficient appliances (orange).

Compost – least impact (green, under 0.1).

A note clarifies that these are meta-analytic estimates of greenhouse gas reduction potentials, drawn from 659 estimates across 47 academic journal articles. The average person emits 6.28 tonnes of CO₂e per year, though this varies widely by income and country. Wealthier populations may emit up to 110 tonnes per year, while lower-income populations may emit as little as 1.6 tonnes.

Source: WRI, based on data from Ivanova et al., 2020.
Reposted by Ragnar {Groot Koerkamp}
jedbrown.org
With rebase-and-ff-merge, the intermediate commits never get tested and can be broken even if the final state works, which is a mess if you are bisecting. Squash-merge is reliable, but coarser grained.

It is frustrating that GitHub goes hard on update culture/sync with upstream without intent.
Reposted by Ragnar {Groot Koerkamp}
nikomatsakis.com
New blog post arguing that we need to have a way to create handles that is both explicit *and* ergonomic around closures (even if we later have a fully automatic option, too).

smallcultfollowing.com/babysteps/bl...
We need (at least) ergonomic, explicit handles · baby steps
smallcultfollowing.com
curiouscoding.nl
I'm not getting the 'it's unfair to put the climate burden on only half the conference participants, so let's organise it in Hawaii to spread the load' line of thinking.
curiouscoding.nl
Still looking for answers 🥺
curiouscoding.nl
So what's the equivalent of `perf record && perf report` on a MacBook?

I want to see the generated assembly and which lines are hot.
Reposted by Ragnar {Groot Koerkamp}
subfossilguy.bsky.social
Matterhorn tonight after the golden hour, when all starts! 🧡
Reposted by Ragnar {Groot Koerkamp}
sophie.huiberts.me
found an IRL linear program, took some pictures
4 photos showing the same thing from different angles. a convex polyhedron made of glass, with black edges, is held in two hands. the hands wear white gloves, the polyhedron is wider than it is tall or deep. width is around 4 hands, other dimensions are about one and a half. inside the polyhedron is a orange ping pong ball, and is has found its resting spot at the bottom vertex. hence it solves the LP of minimizing height subject to being inside the polyhedron
curiouscoding.nl
So what's the equivalent of `perf record && perf report` on a MacBook?

I want to see the generated assembly and which lines are hot.
Reposted by Ragnar {Groot Koerkamp}
aphillippy.bsky.social
Funny story, though, we found this gene in NCBI databases, but it was annotated in Streptococcus pneumoniae! This is surely human contamination in a bacterial strep sample that was not properly filtered. Lesson: use CHM13, or better yet a pangenome, when filtering for human contamination...