Ritesh Oedayrajsingh Varma
rovarma.bsky.social
Ritesh Oedayrajsingh Varma
@rovarma.bsky.social
Building Superluminal (https://www.superluminal.eu / @superluminal.eu), a user-friendly CPU sampling profiler for C/C++, Rust & .NET on Windows & consoles. Ex-Guerrilla Games (H:ZD)
Great post!

Including a sneak peek of a certain profiler on a platform that is very much not Windows ;-)
New blog post! In "Billions of triangles in minutes" we'll walk through hierarchical cluster level of detail generation of, well, billions of triangles in minutes. Reposts welcome!

zeux.io/2025/09/30/b...
September 30, 2025 at 7:02 PM
Reposted by Ritesh Oedayrajsingh Varma
It's understandable that Unreal needs to touch a lot of files when starting the editor. But what if I told you that >5500 of those files are not needed for the editor to start at all and are just adding seconds to the editor launch time?
(Fix included!)
#u5 #gamedev
larstofus.com/2025/09/27/s...
Speeding up the Unreal Editor launch by … not opening 5500 files?
In my last article I wrote about some tooltip optimization to reduce the start time of the Unreal Editor by 2-5 seconds. Turns out people do really care about their editor start time. So much that …
larstofus.com
September 27, 2025 at 5:36 PM
Nice investigation! Sampling profilers > instrumenting profilers when you need to see what’s happening in code you *didn’t* write. Great example of the right tool for the job!
My new blog post is there, and it's a bit different from usual: Fixing stutters in your own code is hard enough, but this time I try to fix performance issues in a closed-source game. No source code or debug symbols, but a lot of guesswork. larstofus.com/2025/07/27/p...
#gamedev
#Trackmania
Profiling without Source code – how I diagnosed Trackmania stuttering
A very common side effect of working as a programmer is the constant frustration of not having source code access to all the software you use. Bugs, problems or missing features in your own work ca…
larstofus.com
July 27, 2025 at 4:42 PM
Reposted by Ritesh Oedayrajsingh Varma
My new blog post is there, and it's a bit different from usual: Fixing stutters in your own code is hard enough, but this time I try to fix performance issues in a closed-source game. No source code or debug symbols, but a lot of guesswork. larstofus.com/2025/07/27/p...
#gamedev
#Trackmania
Profiling without Source code – how I diagnosed Trackmania stuttering
A very common side effect of working as a programmer is the constant frustration of not having source code access to all the software you use. Bugs, problems or missing features in your own work ca…
larstofus.com
July 27, 2025 at 11:28 AM
Days since I've had to waste time debugging obscure issues caused by Linux's deranged shared library model: 0

"Nice that you're linking to a static library, but there's a shared lib loaded with the same symbol name in it, so I'm gonna use that one instead, ok?"
July 15, 2025 at 9:13 PM
tfw you're collateral damage in the Great AI Wars
July 3, 2025 at 2:11 PM
We've been micro-optimizing our eBPF code, and it reminds me of the SPU era a bit. The compiler/JIT is so basic that old tricks are useful again. Regular C turns into atrocious ASM, but writing C like it's ASM fixes it. I'm kinda loving it.

It's all stuff like this (before/after):
June 25, 2025 at 8:34 PM
Solved it by the ancient tradition of Just Reading The Code.

Turns out continuously taking the RCU lock by inserting thousands of elements into a BPF_MAP_TYPE_LRU_HASH from within a NMI is Not Good for your system.

Rolled our own (simpler) version directly in eBPF.
How does one diagnose the entire Linux system locking up when using a particular eBPF data structure? Are there any post-mortem logs to look at? dmesg is only about the current session.

Asking for a friend.
June 25, 2025 at 6:55 AM
How does one diagnose the entire Linux system locking up when using a particular eBPF data structure? Are there any post-mortem logs to look at? dmesg is only about the current session.

Asking for a friend.
June 23, 2025 at 2:59 PM
Currently investigating & optimizing the perf of our eBPF-based capturing code, but there's no perf tooling for eBPF. So instead, we're profiling with manual instrumentation like savages. Ironically the very thing we originally set out to eliminate with Superluminal.
June 19, 2025 at 9:10 PM
> visit website
> notice it isn't working
> open devtools
> 36 errors

I sometimes wonder how non-developers are supposed to use the internet nowadays. Are they just perpetually in a state of brokenness with no idea how to escape it, accepting this as 'normal'?
April 7, 2025 at 8:18 AM
One thing people really like about Superluminal is that it Just Works, and we’re trying hard to get that same experience on Linux.

But this platform sometimes really feels like it’s actively fighting against anything “just working” and it would really prefer you Do The Work tyvm.
April 4, 2025 at 1:29 PM
*cracks knuckles*

*starts writing Yet Another String Parser for Yet Another Commandline Tool*
April 1, 2025 at 3:14 PM
The thing I perhaps miss the most while developing on Linux, besides obviously a good debugger, is Araxis Merge. I've been using Beyond Compare since we started on Linux support, and I just *cannot* get used to it. The diff view is just completely unparseable to my brain.
March 31, 2025 at 4:00 PM
1) what
March 27, 2025 at 10:55 AM
EINVAL, the "something went wrong" of the Linux kernel.

What went wrong? Who knows, read the source!
March 25, 2025 at 9:13 AM
reached the attempting (and failing) to debug the kernel stage of Linux development
March 21, 2025 at 1:20 PM
Don’t think I’ve ever written as much string parsing code as I have while working on Linux support. /proc files, cmdline tool output, etc, so much stringly typed stuff.

Feels bad knowing you’re really just doing binary data -> string -> binary data conversions all over the place.
March 16, 2025 at 12:17 PM
Built a new PC with NVMe drives for the first time yesterday. Having grown up with the left side, I cannot adequately express how absolutely insane it is to me that the right side exists and is widely available today.

how it started how it's going
February 15, 2025 at 10:05 AM
Good thread on how performance problems are, once again, *never* where you expect them to be. Great investigation & fix by Rick. Profile all the things!
I just posted a beta for Paint​.NET v5.1.3 -- this update has
a whole bunch of general improvements, performance optimizations, and bug fixes. Check it out! forums.getpaint.net/topic/133299...
February 7, 2025 at 2:10 PM
Co-signed.

I remember the vibe shift in the early 00’s from ‘just write the code you need’ to ‘writing your own code is NIH syndrome’ to ‘NIH = bad’ and ‘DRY’. The dependency mess in modern dev is the conclusion of that movement. But we can shift it back.

Proudly NIH all the things, friends.
January 24, 2025 at 3:55 PM
We're going to be refreshing Superluminal's website this year. We have a pretty good idea of what to change, but I'm curious —

In your own words, if you're using Superluminal, why do you like using it?
January 13, 2025 at 1:35 PM
We've been investigating the crash reports that came in over the holidays, and a large % are null pointer crashes in very strange places in our licensing code. Looks like somebody had a fun time over the holidays trying to bypass our licensing system. So that's cool, I guess.
January 10, 2025 at 4:33 PM
If you have captures with hundreds of thousands of loaded/unloaded DLLs, or processes with hundreds of thousands of threads, or captures with millions of functions in the function list, this is the update for you :-)
We've just released our first update of the new year with a lot of perf and quality-of-life changes on the Insider channel.

Go check it out, and happy new year!
January 9, 2025 at 12:58 PM
Reposted by Ritesh Oedayrajsingh Varma
i've seen too many tech talks/presos that suffer from a few totally fixable issues, and decided to write about it:
gpfault.net/posts/gripes...
My Gripes With Tech Talks
gpfault.net
December 9, 2024 at 7:17 AM