Basically, I follow these
rules from BackBlaze more or less.
In particular, he mentions only a 5% cost to do cross platform using these rules (sounds about right to me but that assumes you're doing them all at once).
The benefits in paragraph 5 are nothing to sneeze at.
I prefer go these days, instead of C. go has this great feature of having files with suffixes that only compile on that platform (so foo_windows.go, foo_mac.go, foo_linux.go). That's much better than ifdef, but requires go. That addresses my needs made in Rule #4.
That's a fascinating blog post, thank you for the link.
Funny enough, though, that post pretty much describes the approach I am taking myself. Not because I've read about it somewhere, but it's simply the most intuitive way for me to solve this problem.
Glad to know that I can trust my gut in such things.
Also thanks for the Go recommendation. The part I am the least happy about in my own approach is the constant hassle of having to deal with #ifdefs, and the resulting preprocessor hiccups that can sometimes interrupt your flow for a few seconds, happens especially often with Intellisense.
Unfortunately, Go isn't an option for me.
The trick, and the one likely the hardest to implement is #10 - fire those who don't follow these rules.
Yyyyyyep, 100%. Wouldn't be hard to follow for me, I'm pretty ruthless when it comes to these things, but it evidently seems to be very difficult for all the companies I have ever contracted for.
Maybe they could if they junked everything from their Sooloos foundations and started with a fresh architecture and code base. In particular, they seem to have committed back then to an extreme OO/write-once-run-everywhere dogma (thus .NET) that would be very expensive to retire. I also suspect that their OO metadata representation is a significant contributor to memory demands and problems in maintaining the on-disk version of the library consistent.
Could be. But maybe not.
One of the projects I am currently contracted to work on is a port of a .net application over to Qt. I'm essentially tasked to take one schiitshow and translate it over to another schiitshow. Not my choice, trust me, but it is what it is. Luckily, they don't pay very well, so that adds to my joy of late. 🙄
Purely Windows, though, no cross-platform requirements.
What honestly surprised me is that the Qt port seems to be ending up about ¼ as memory hungry and about 3x as fast as the .net version. No changes in functionality or processing, just a direct port from one horrendously bad framework, C# and GarbageCollection to an equally horrendously bad framework, C++ and manual memory management. (Plus Qt's version of automatic reference counting, which is actually seriously good. Almost rivals that of Swift and Objective-C. Kudos where kudos are due.)
So, as far as I can tell, looking in from the outside, Roon being the resource hog that it is could well be in part based in sub-optimal old data design decisions. But for a library of maybe 500 albums, for example, I would be surprised if that made up considerably more than maybe 10MB of "wasted" memory. The rest is, based on personal experience with .net, most likely just, well, .net being .net doing .net things.
Judging by the content of this thread, I’d have to guess that a disproportionate percentage of hard core headphone enthusiasts are also professional coders, or at least designers of some sort. If so, what do you listen to while coding / designing?
When I lived in a cubicle and needed to focus. I gravitated towards beat heavy pulse driving music. Now that I have privacy I prefer complete silence when working and only listen to music when I’m not working.
Forgot to add- I’m not a coder. My world is design, but physical realm.
Would make sense. Coders tend to sit at their desks, staring at a screen, trying to focus with the least possible amount of distraction on their work. Headphones and music go a long way towards that. They also tend to make a somewhat decent income. So I would say that it is only natural for a chunk of them to gravitate towards some more advanced headphone gear. If you have to wear and use these things all day, you better pick the right tools for the job.
I would say that, at least generally speaking, this applies to coders and (graphics/engineering) designers much more than to probably any other profession out there.
The music I listen to while working massively depends on my mood at any given moment, as well as the task at hand.
For some tasks, I prefer it quiet. For others, I like to create a "tunnel vision" kind of situation so that I can hyper-focus on whatever it is that I need to accomplish for as long as possible without having to take a break. Could be an hour, could be 12. Depends. In those situations, I gravitate towards electronica and specifically synthwave. Happens maybe once or twice a week. For everything else, the "in between" mundane kind of tasks, I like to go with southern rock, dirty blues, some jazz, and a bit of indy rock/pop thrown in for good measure.
For "recreational listening," I'm almost 100% classical. Mainly German/Austrian and Russian late romantics to today.