852 karma · joined June 25, 2009
For some reason I find it really hard to read these tree map visualisations. I know the theory and all that, but for me they just aren't an intuitive way of displaying that kind of information. For me a radial graph (i.e. pie chart like) is much easier to grok - I don't even have to think about it, I just get it. Seems like there must be plenty of people who don't think the same way though, given how many different tree map disk viewers there are out there!
For what it's worth I use Diskitude (http://madebyevan.com/diskitude/) on Windows and Daisy Disk (https://daisydiskapp.com/) on Mac. Both are great!
SIMD = Single Instruction Multiple Data, meaning the same instruction being applied to multiple different values simultaneously. That's exactly what GPUs do.
I use QtCreator as my main IDE & think it's great, so of course I install new versions as soon as they become available. I compile & test against several different versions of Qt though and every single one of them lumbers me with an additional out-of-date copy of my IDE. This bugs me - more than it probably should.
Interesting choice of example, because over the last few years open formats like Pixar's USD (https://graphics.pixar.com/usd/docs/index.html) have been emerging for managing complex 3D scenes - precisely because of problems with opaque file formats.
That said, we're now seeing more and more things like Unreal Engine's Blueprints, Apple's "Swift Playgrounds" and so on. I think your wish is slowly coming true.
Same with %: since we're talking about a number-like object, there's a clear and expected meaning for it and that is NOT cross product.
I'm a remote worker too (and I'm very happy with the way my current employer handles it). As long as I'm available at the times and places my employer needs me to be, why should they have any say in where I live or how I spend my money? I want to be able to manage my quality of life myself, not have it decided for me by someone else!
If you want to refute it, why not say what you think is wrong with each of the prescriptions instead of just saying "most of it is bad"?
Personally I agree with most of the prescriptions but there's one I disagree with completely and another that I'd add a caveat to.
The one I disagree with is using c headers instead of their c++ wrappers. Some of the c++ wrappers do actually add value (e.g. cmath adding templated versions of abs, etc) and it's easier for me to remember a single consistent rule ("use the c++ wrappers, always") rather than a list of which ones to use the c++ wrapper for and which to use the c header for.
The one I'd add a caveat to is the one about not using anything from the STL that allocates: I think that's good advice under some circumstances, but not all. The STL containers are really useful for getting something up and running quickly, so I think it's fine to use them in that case and only switch to custom containers once allocation shows up as a hot spot in your profiling.
As a caveat to the caveat, I would add that STL classes should only ever be used as an internal implementation detail, never exposed as part of an API. This is because the implementation of the STL classes can change, causing binary incompatibility. For example, Microsoft changed their implementation of std::string between Visual Studio 2008 and 2010 (if I remember correctly; and possibly again since?); if you have a library compiled against the older std::string you can't use that in a project being compiled against the newer std::string and vice versa - unless you have the source for the library and can recompile it. Using your own classes protects you from that because it puts you in control of when the ABI changes.
The case I was talking about was the OpenVR library, which changed the names for some of its enum values in the upgrade from 1.0.4 to 1.0.5. The change was documented in the release notes and it was straightforward to fix our code, but now we have to document that we require at least v1.0.5 and everyone building our code has to update their copy of OpenVR and so on. There are knock-on effects, is what I'm trying to say.
Portability, power and build quality are all excellent. Battery life isn't up to MacBook standards, but you get a good 4 to 5 hours on a single charge which is still fairly usable. The trackpad isn't as nice as a MacBook either, but it's good enough. Everything else about it has the MacBook Pro completely outclassed in my opinion.
So... you compile with optimisation switched off?
It's also handy for the compiler to be able to check for errors in shader invocations. Looking up parameters by name and setting them dynamically adds a whole class of potential runtime errors that don't exist in straight c++ programs.