The idea is that each file (source or header) should include exactly those headers from which it uses things. In practice, it gets a bit more complicated has you don't want to include internal implementation headers and sometimes the same thing does not even have a canonical public header but IWUY does allow you to configure all that to your liking.
For anyone else needing to tackle something like this, its definitely worth checking out Binwalk [1]. It is meant for extracting firmware but it works decently well on most files-in-files type data formats.
The growing user hostility of UIs makes me want to stop developing software and even stop using computers. I started using computers because they made more sense to me than a lot of things. Now, I'm encountering these little moments of illogic and unreason every hour of the day.
It's not just beginners who need little cues. I'm deeply familiar with the APIs behind many of these monstrosities and yet I still find myself annoyed or momentarily confused by UIs that minimize, obscure, and hide in the name of Design.
> At a previous company, there was an “infamous” commit in our main repository. The commit was about 10 years old, and it replaced every tab with 4 spaces.
If have commits like this, add the ids to a file `ignorerevs`, and then tell git about it:
Apple's chat.db has an esoteric schema owing to the fact they never designed it from the ground up and instead kept adding new columns and tables with each macOS release. This makes their queries super complicated with multiple joins.
Once you have the schema figured out, it's dead easy to build a third-party client that works better than the official one. Even search works great with a simple LIKE query but Apple re-indexes all messages leading to your CPU going over 1000%: https://twitter.com/KrauseFx/status/1396433852126670852
Source: I built a third-party desktop client for iMessage at https://texts.com and reverse engineered the complete sqlite structure.
The real problem is the lack of configurability. You could change the window border width to anywhere from invisible to some insanely huge number on the older versions of Windows, and everyone would be happy. Now you're forced to use whatever some stupid "designer"'s idea is.
… here’s a vid where you can see a live playback of both versions simultaneously. Yeah, the voices are as cringe as I remember. The music is lacking. Melodrama. It’s just bad. https://youtu.be/Tsmt29AJBaE
[edit] even that video doesn’t quite get the best score. They’re playing EGA with no soundcard at all. Here’s the game with an AdLib / SoundBlaster score, hardware standards that were just catching on when Loom was being developed. https://youtu.be/qxoRHAY3CM0
And here’s the Roland MT-32, the card that everyone knew was the best, and no 13 year old could possibly afford. THAT’S the premium experience. https://youtu.be/SVYI2logmXs
Off topic, but thanks Wolfram for creating Golden Layout. I've developed two major platforms using it, and it's been hugely beneficial to the systems I've built.
This is useful but sometimes whats called 'Music Theory' is actually more like 'Music Notation' or 'Music Naming Conventions' and thats what most of this site is. IMHO for historical reasons the western naming conventions we've come up with for the 12 semitones (A, A#/B♭, B, C, C#/D♭, D, D#/E♭, E, F, F#/G♭, G, G#/A♭) actually obscure the underlying relationships between the notes rather then elucidating them. The same conventions get carried across to sheet music, where the overriding concern historically seemed to be saving ink rather than clarity.
The real 'theory' boils down to why the pattern of the major and minor scales is the pattern that it is (which is the same question as 'why are the black/white keys on the piano arranged that way?'). And the related question of why are there 12 of them in the octave.
And that underlying theory is much better explained in this page that was posted to HN some years ago:
the bits are cpu instructions that you can analyze the data flow to revert the instructions into c++ code, either manually or assisted with a decompiler.