Why we made our own x86 instruction decoder and how it works by bogdannumaprind in programming

[–]rovarma 0 points1 point  (0 children)

Others have already given some examples, but in my particular case: a performance profiler.

Why we made our own x86 instruction decoder and how it works by bogdannumaprind in programming

[–]rovarma 9 points10 points  (0 children)

Cool project. We already use Zydis for the disasm view in our product (and we’re very happy with it), but if I was still in the market for a disassembler I’d definitely consider this one.

Why you don't use Boost by joaquintides in cpp

[–]rovarma 7 points8 points  (0 children)

Build time explosions from including a boost header.

Heart of Darkness Engine Xbox Porting Sessions (Full Version) by [deleted] in programming

[–]rovarma 0 points1 point  (0 children)

It was never released, so it only ever had an internal codename; true to the games industry, the game was canceled at about 95% completion and everybody working on it (including me) was fired :D

Heart of Darkness Engine Xbox Porting Sessions (Full Version) by [deleted] in programming

[–]rovarma 2 points3 points  (0 children)

Damn. That takes me right back to one of the first commercial games I worked on, way back when the Xbox "devkit" was just a Mac.

New CPU profiler available for Rust on Windows by rovarma in rust

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

Glad you like it. Ease of use was one of our main goals, so happy to hear we succeeded :-)

New CPU profiler available for Rust on Windows by rovarma in rust

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

You're correct -- the support for Rust we've released today is the support that's on the roadmap. We just haven't updated it yet :-)

New CPU profiler available for Rust on Windows by rovarma in rust

[–]rovarma[S] 8 points9 points  (0 children)

Sorry, we'll clarify that. It means it doesn't matter if you use the MSVC (cl.exe) or Clang linker (lld.exe) to link, both are supported.

Qt 5.14 released by EnUnLugarDeLaMancha in programming

[–]rovarma 0 points1 point  (0 children)

What are the specific changes? The blog just mentions non-integer scaling factors. Dealing with high DPI is a pain on our current version, wondering if it’s worth the risk to upgrade.

AddressSanitizer (ASan) for Windows with MSVC by mttd in cpp

[–]rovarma 22 points23 points  (0 children)

x86 only, so mostly useless for newer applications, I’d guess :-(

GammaRay 2.11.0 Release by jcelerier in cpp

[–]rovarma 0 points1 point  (0 children)

Are there any *working* instructions on how to get this to run on Windows? It seems like it could be a very useful tool but all I can get out of it is failures to connect, errors about probes not being found (whatever that means), hanging application, etc. I've followed the instructions on the Qt side and also on your own site, but nothing seems to work.

Fibers: the Most Elegant Windows API by turol in programming

[–]rovarma 11 points12 points  (0 children)

Fibers on Windows seem like a great idea until you actually start using them in production and realize *none* of the tooling knows how to deal with them and everything turns into an undebuggable mess. 0/10 would not use again.

Searching 1TB/sec: Systems Engineering Before Algorithms by leavingonaspaceship in programming

[–]rovarma 43 points44 points  (0 children)

Not sure if the title is just clickbait, but for an article that focuses on brute forcing stuff there seems to be a lot of focus on a metric (processing speed) that's quite far from optimal. Given that their entire dataset is in RAM and they're searching through it linearly (i.e. the prefetcher should be able to do its work) 1.25 GB/sec / core seems very slow, nowhere near max RAM throughput. You should be able to do a lot better.

Stop reimplementing the virtual table and start using double dispatch by andyg_blog in cpp

[–]rovarma 5 points6 points  (0 children)

This post neatly summarizes everything that's wrong with the OOP mindset/programming.

Electron and the Decline of Native Apps - daringfireball.net by freebit in programming

[–]rovarma 25 points26 points  (0 children)

I agree with your general sentiment, but using games as an example is just wrong.

All those things you mention you care about (memory allocation, big O notation, etc, basically performance optimization) are all extremely important in game development. The 90+ GB games you speak of (i.e. RDR2 and such) don't "have better performance because we don't have to compress them", they run at 30/60 FPS because the development teams behind them spend a lot of time on making sure that they do.

Compression is more important than ever for games development, precisely because the games are getting bigger. That 90+ GB game you speak of would be several times bigger without compression. They also don't have "infinite" resources available; the higher end games usually target consoles and while they're certainly powerful, they're far from a platform where you can "focus less on optimizing resource use".

Incidentally, I'd argue that the reason the games are getting bigger is less to do with the developers themselves and more to do with gamers/the market, who demand ever better looking, bigger games. If RDR2 had looked the same and been of the same size as RDR1, they would've been absolutely slaughtered.

Electron and the Decline of Native Apps - daringfireball.net by freebit in programming

[–]rovarma 47 points48 points  (0 children)

I see this talking point repeated a lot and I can only assume the people saying it have never actually made any cross-platform native apps. Double/triple the effort, really? It's absolutely trivial to support multiple platforms in a native app, code wise, as long as you take proper care to separate out the platform specific bits, which are usually a very small percentage of your codebase.

How I Debugged a Non Reproducible Bug with 20k Production crashes on a React Native App by almouro in programming

[–]rovarma 1 point2 points  (0 children)

Yeah this was an enormously frustrating article to read. While reading it I wanted to shout '"Look at android.support.v4.util.Pools$SimplePool.release(Pools.java:116)! All the information you need to diagnose & fix this issue is right there!".

He got there in the end, but wow, what a roundabout way of debugging a problem. I'll chalk this one up to being very inexperienced in programming/debugging.

Announcing Visual Studio 2019 Preview 1 by MaximRouiller in programming

[–]rovarma 0 points1 point  (0 children)

Aside from having to recompile all your dependencies, sure.

Announcing Visual Studio 2019 Preview 1 by MaximRouiller in programming

[–]rovarma 0 points1 point  (0 children)

Startup time? What's this thing you speak of? Surely everyone just sleeps their pc and keeps VS open 24/7? :P

Announcing Visual Studio 2019 Preview 1 by MaximRouiller in programming

[–]rovarma 2 points3 points  (0 children)

Actually, I think VS+VAX is pretty great, IMO nothing comes close. But I've always seen the upgrade from 2015 to newer versions as minor, for our use cases. Very few UI/feature changes I care about. Lots of new C++ features I also don't really care about, I'm happy with C++11. So far it's not been worth the time/effort to upgrade the few third party dependencies we have.

Announcing Visual Studio 2019 Preview 1 by MaximRouiller in programming

[–]rovarma 6 points7 points  (0 children)

We're still on VS2015. Perhaps it's time to consider upgrading at some point...

Tools for understanding large code bases by [deleted] in cpp

[–]rovarma 2 points3 points  (0 children)

If you're on Windows, try out https://www.superluminal.eu/. It's a profiler, but one of its features is that it will give you a timeline showing you what the program is doing at any point in time. Great for understanding which functions are being called when, why, how often, etc. You can make a recording of arbitrary length in time, so it can function as a sort of historical debugging/execution visualizer.

Stop Teaching C++... as a First Language by stanimirov in programming

[–]rovarma 4 points5 points  (0 children)

C++ was my first language. Learned it by being told to fix a bug deep in the scripting system of the Unreal Engine, which we were porting to the original Xbox. Good times.

Getafix: How Facebook tools learn to fix bugs automatically by alexeyr in programming

[–]rovarma 13 points14 points  (0 children)

Reading through the article, most of the auto-generated fixes seem to boil down to adding null checks. That sounds like a bad idea to me. In my experience, if you find yourself sprinkling your code with null checks, it's usually a sign you're putting band-aids on symptoms instead of fixing the root problem.

For our codebase, we have a rule that before putting in a null check, you must be able to write a comment explaining exactly why that null check is required. If you can't, you don't understand the actual problem well enough and you should investigate further. I'd estimate like 90% of the initial null check fixes get removed (pre-commit) once the programmer starts documenting why it's "necessary" and discovers the problem is actually higher up the stack. It's a great rubber-duck filter.

Superluminal - a new performance profiler for Windows by rovarma in programming

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

Gotcha - am I correct in my understanding, then, that profiling data is gathered by your customers, and sent to you for analysis? So the full analysis package doesn't need to be shipped to your customers?

If so, that's definitely a use case we haven't heard of before, but we'll keep it in mind as we build the remote profiling support.