About
This is a dev log — notes on whatever I’m building, breaking or reading about on a given day. I’m interested in mechanistic interpretability and compilers.
It’s a log, not a publication. A lot of what’s here started as a conversation with ChatGPT or Claude — I ask questions until something clicks, then summarize the useful part so I can find it again. Most posts are quick captures for my future self and I don’t spend much time polishing them. The exception is when a post is trying to teach a concept — those I actually sit with and rewrite until the explanation holds up.
Nothing here is original research. I’m planning a separate portfolio blog for that, with findings of my own — work in progress.
Open source contributions
dial9
Tokio telemetry you can run in production, in Rust.
- #905 — skip the bucket reservation on a dealloc miss. The memory-profiling hook resolved every deallocation through
scc’sentry(), which takes the per-bucket write lock and reserves a vacant entry before the caller can even see that the address was never in the map. The liveset holds only sampled allocations — about 99.9% of deallocs miss — so nearly every call paid for a reservation it immediately discarded. A lock-freepeek_withnow runs first and returns early on a miss; hits still go throughentry(), so the bucket lock continues to span the read and the remove and a racingon_alloccan’t put stale metadata on the emittedRawFree. An all-miss microbenchmark of the two call shapes came out 2.3–2.5x apart.
evalscope
Evaluation framework for LLMs and VLMs.
- #1673 — retry 200 responses that carry a gateway error payload. Some OpenAI-compatible gateways return an error with
200 OK, and the OpenAI SDK happily deserializes that into aChatCompletionwithchoices=None— so the failure surfaced outside the retry boundary with almost no diagnostics. Validation now happens inside it: the gateway’s own error is reported, transient failures are retried, and deterministic 4xx ones fail fast. - #1678 — move litellm imports to module level. Three functions imported litellm lazily to keep the module importable without it. But litellm ships in
requirements/framework.txt, so it installs with a plainpip install evalscope, and the model registry already gates the import a layer up.
smartcore
Machine learning and numerical computing in Rust.
- #390 — replace unmaintained bincode with postcard. bincode’s final 3.0.0 release is a poison pill whose entire source is
compile_error!("https://xkcd.com/2347/"), so any project Dependabot bumped to it stopped building. It was a dev-dependency used for serde round-trip assertions, and postcard is a drop-in for that. The SVM tests stayed onserde_json— postcard isn’t self-describing, so it can’t deserialize theirtypetag::serdetrait objects. - #423 — remove duplicated RealNumber trait bound.
GaussianNBasked forTX: Number + RealNumber + RealNumberin four different places. It asks nothing extra ofTX, which is why rustc and clippy both stayed quiet about it since the v0.4 generics rewrite.
Mechanistic interpretability write-ups have their own site, MI notes.
Write-ups on LLM agents — building them, and reading the ones worth reading — are on Agent notes.
You can browse everything by tag or search the archive.
For questions, corrections, or anything else, reach out on X — @stringray3, or by email at serozekim@gmail.com.