When you start to see that capitalism is nothing but systemic exploitation and domination, and that Marxism-Leninism only reproduces the same state capitalism under another name through authoritarian state socialism, you then realize that leftist parties don’t actually bring about any fundamental change, because they to keep power rigidly centralized, to preserve existing hierarchies, and to maintain the dominance of the ruling classes.
If you want a genuine alternative, one built on w…
I am, in point of fact, a particularly haughty and exclusive person, of
pre-Adamite ancestral descent. You will understand this when I tell you
that I can trace my ancestry back to a protoplasmal primordial atomic
globule. Consequently, my family pride is something inconceivable. I
can't help it. I was born sneering.
-- Pooh-Bah, "The Mikado"
If you're writing a library, you should really avoid #CMake. CMake is designed to lock you in. As in, once you release a #FreeSoftware project using CMake, you can't switch to another build system with causing real trouble to your users. And if you support multiple build systems, as soon as you start supporting CMake, some of your users are going to start locking everyone else in.
That's because CMake uses a custom package discovery mechanism that's hardly compatible with anything else, and that is so complex that it's very hard to reimplement it with any other build system. So when others start relying on the CMake config files being installed (and they naturally will, since that's how CMake does things), you can't stop installing them without actually breaking stuff. And if you want to preserve them without actually using CMake, well, good luck with that.
And if CMake is one of the options you support, then some of your consumers will accidentally start relying on it anyway. And this will be much worse for everyone, because now their projects won't work for people who build your project with any other build system. Which in turn will force more projects to use CMake anyway. Which in turn will make more people rely on CMake being used…
Use #Meson as the build system, it's clean and not designed to lock you in. Use pkg-config for library data; it's simple and portable.
#OpenSource
The feeling when you find the root cause for a problem that has been bothering you for months. And it turns out to be fixable by adding a single letter. (To turn an "unsigned long" literal into an "unsigned long long" one.) (Actually I made it use the UINT64_C() macro from <cstdint>.)
Writing portable code is hard. And thanks, Windows, for keeping "long" as 32 bits even in 64-bit code.
Now, if only Clang or gcc on Linux would warn about such po…
«This can be immensely empowering, and can improve public trust: it’s hard (and unwise) to give yourself over to a technology that won’t tell you how it works, particularly when its predefined settings allow only for meagre approaches to “user privacy”. As I ask my students, if you could develop an AI at your own home, and programme it to reflect your values and prioritise your safety, wouldn’t you trust it more? Well, the idea isn’t so outlandish – it only feels impossible because big tech fir…
The portable air conditioner unit we have in the bedroom is reasonably advanced: it has WiFi connectivity, a remote control, and the ability to switch between heating and cooling. It's annoying, though, that you can only set a sleep timer on the unit itself, which isn't great when you're all nice and comfy in bed. It also takes several button presses when you're there. Fixed thanks to #HomeAssistant, meaning it can be set through the app or voice 😄
protip: #WearAMask to a TV show taping so you can easily pick yourself out in the crowd when you watch it later!
Professional bakers often use old bread to mix it with in new sourdough to make really really good bread.
You can adapt this by adding coffee leftovers to the new water when brewing coffee. This makes coffee extraordinarily delicious - especially if the old coffee has ripened inside the can over the weekend.
#protip
Okay, time to continue bashing. Perhaps this one project is just that bad, but Conan sounds like a complete antithesis of what a package manager is all about.
Well, this package insists to build its dependencies via Conan. Except it insists on really old versions that don't work with my glibc. So I need to start swapping dependencies.
Except it turns out Conan doesn't care much about resolving dependencies. So I actually need to start adjust versions of the dependencies of packages that it wants to build. And then it starts rebuilding other stuff and again everything fails because of incompatible versions.
And when I finally manage to find a working set, the actual project fails over protobuf version. After a long WTF-ing, I finally realize that it's complaining, because it somehow managed to mix the version of protobuf built by Conan and the external protobuf installed by Conda.
So yeah, great job. A package manager that doesn't really resolve dependencies but instead forces a dependency hell on you, and on top of that ends up mixing system packages with its own packages.