Easier to do than to get never-exercised edge-case code to work flawlessly. Are you sure you can’t just throw sqlite at the problem? It’s often overkill but, hey, it’s there on the shelf, might as well use it and I’ve seen it out-perform hand-rolled data structures. Non-persistent ones, written by very confident C coders. And remember crashes are unavoidable, if nothing else then someone can trip over the power cord.
Crash-only software. To be resilient you need some kind of ACID anyway which means that you can let go of your shutdown procedure and just send yourself SIGKILL instead.
Valta also sounds like a Germanic loan just a second… yep. Same root as German “Gewalt”, violence, “walten”, to rule, preside, “verwalten”, to administer, also English wield.
What’s it with Finnish. One third borrowed from Estonian, another third from the Swedes, the rest from the Sami.
I’m not even Christian what would I care about depictions or inspiration being “problematically Pagan”.
What I can say is that it’s unlikely that much of the parallels (like the Osiris thing) existed before Rome became Christian as over in staunchly monotheist Palestine people wouldn’t have taken inspiration like that, while turning multiple gods into one sounds quite reasonable for a people going from polytheism to monotheism.
For modern Christian, I think, the question is “How much did the Romans change”. That is, how different was early, pre-Roman, Christianity to what’s now considered authoritative, like the Bible, which wasn’t brought down from a mountain by Jesus.
Sol Invictus, in particular it’s also where the halo in depictions comes from… which isn’t really “other sun gods”, it’s in particular the Roman sun god. Misremembered the resurrection part, that’s Osiris who isn’t a sun god and the Horus parallels have been shown to be bunk, aside from getting nursed by Mary depictions being inspired by Horus getting nursed by Isis.
Many of which won’t be recognised, at least not without further qualification. And no you can’t become an English teacher with a US degree in literature: You need to study second language acquisition pedagogics, ideally for that specific language pair. Nobody cares about your interpretation of To kill a Mockingbird.
Yep the birth of Christ just coincidentally coincides with the end of Brumalia, which of course noone noticed when the emperor suddenly insisted everyone become Christian and had the bible written by committee. And it’s of course a coincidence that that was (back in the day) exactly the winter solstice. And it’s also just a coincidence that Jesus’ life story has quite some parallels to that of earlier sun gods from the general area.
Most current Christmas traditions are more Germanic in nature, though, e.g. the Christmas tree. While in the current form a quite recent invention, decorating the house with evergreen stuff was common through the ages – branches, wreaths, not whole-ass trees. The needles btw are fine smudging material don’t just sweep them away.
3d not being required makes a hell a lot of sense and of course it wasn’t people have been drafting on paper for ages. They might’ve ended up on Mac or maybe Amiga, but an SGI workstation is quite an investment when you don’t even need to spin polygons. IRIS GL dates back to the early 80s, doesn’t seem so much to be a timeline but price and need thing. And it’s not like you can’t have a 3d view without acceleration, just would take a while to render and a frame every five seconds might still be usable.
There apparently was an IRIX version at one time but with no user base preference, more likely they were thinking “where’s my C: drive” so once 3d acceleration hit the mainstream everyone happily switched back to Microsoft. Meanwhile you have 3d artists complaining that they can’t move windows with meta+lmb on windows.
I mean back in the days they should have been running on IRIX, and SGI switched over to Linux when they made the switch to x86 CPUs. Plenty of movie studios switched over to Linux workstations because of that, porting from IRIX to Linux is trivial compared to porting to Windows, why didn’t the same happen with CAD?
Wintel-PCs for the longest time just weren’t suitable for 3d work, they were office machines.
AutoCAD
It’s always funny with 3d. Graphics? You need Houdini? Of course it runs on Linux, it’s a UNIX-native program after all, first version ran on IRIX because what else would you use for 3d work but an SGI workstation and Linux is the commercial successor to IRIX. Blender, the same, just 5k bucks cheaper (and not everything is nodes, not yet). CAD? Everything’s suddenly windows-only because… how the hell did that came to be? Were they running 1990’s CAD software on Excel machines?
OpenEXR. Though it probably could use a spec upgrade, in particular add JPEG-XL to the list of compression algorithms. It’s not like OpenEXR’s choices are bad, the lossy ones are just more geared towards fidelity than space savings, kind of the opposite of what you want for the web where saving space is often paramount and fidelity a bonus.
Bonus: Supports multi-channel, so not just RGBA. Not terribly useful for your run off the mill camera, very useful in production where you might want to attach the depth buffer, cryptomatte etc and I guess you could also use it for the output of light field cameras. Oh there’s also multi-view so you can store not just stereo images but also whole all-around captures and stuff. There’s practically nothing pixel-related you can’t do with it though it might require custom tooling.
I think they want to hire you to write a Sokoban AI, and are offering 800 an hour.
I’m not too familiar with the specific legal status of the OSCE in American law, I bet there’s a treaty or the other, but generally speaking a) you’re a member and b) you regularly send out your own people as OSCE mission members into other countries to observe elections and c) Every member state gets observed (alongside non-member countries inviting the OSCE because it’s a stamp of approval and can help stabilise democracies, establish trust in the procedures). Cursory observations are done for basically all elections that aren’t strictly regional, more in-depth ones every couple of elections. It’s democracies holding each other accountable.
If Bumfuck, TX, wants to make a statement against Canadians observing their elections that’s their god-damned right but it’s also the duty of Washington to shut them the fuck up. Not too filled-in on the details either but when you start arresting people with diplomatic passports accredited by the federal level I think you should maybe take a step back and make a phone call before deploying handcuffs.
You don’t need an ID in Germany to vote just, push comes to shove, a way to make your identity believable. Expired ID, student ID, personalised public transport ticket, perfectly sufficient. Generally you just vote with your election notification, a sheet of paper with your address, ballot location, and number in the voter registry on it. If you try to vote with an ID but without notification workers are going to roll their eyes because they’ll have to manually search for you in their lists, heck, you might’ve turned up at the wrong location.
I don’t need my ID to vote, also it’s valid for 10 years. Municipalities fill the voting registry from their citizens’ registry, then send out notifications to everyone. You literally cannot miss an election. You generally go voting with that notification, it’s sufficient, or use it to request a mail-in ballot.
I’m sure administration is sufficiently different in the US than it is in Germany for the thing to not be able to work like that, but, big picture: The IRS can find everyone. Have them fill the registry, then.
The OSCE reports are usually just shy of scathing. The US reaction to those missions ranges, as far as I’m aware, from being completely oblivious to it or its results to Sheriffs trying to arrest observers.
I think you dont fully understand how c compilers ( gcc specifically ) work when using multi file projects
They don’t. C compilers compile single files produced by the c preprocessor (resolving all s), they have no concept of multi-file projects. That’s a thing for the build system, such as make, and it needs dependency information from the preprocessor to do its job (
cpp -M
), and once it has that it has to act correctly on them which is often completely broken because people don’t understand make. Like using it recursively, bad idea. In the wild, a random C project at work you’ll come across needs a full rebuild to build cleanly. Things have gotten better with things like cmake getting more popular but the whole thing is still brittle. GNU autohell certainly makes nothing better, ever.
Also, anything using IL will always have an abi,
Everything will always have an ABI because ABI is just API in the target language, whatever that may be. If your program is compiled and can run it uses an ABI.
Wasm is wasm, and you only need an exposed interface
The core wasm abi is less capable than the C abi: You get scalar values and pointers, that’s it. No structs, no nothing, memory layout is completely unspecified. The component model allows compilers to say “so I’m laying out strings like this and structs like that” giving linkers a chance to say “yeah I can generate glue code between you two”.
Again, i like the idea of rust, but it has a long way to go to be viable atm.
C isn’t even close to being viable according to your standards people just have gotten used to the jank.
And it has many pitfalls to avoid so it doesnt become the hot mess that is any framework based on node.js
Rust doesn’t have portable dylibs precisely because it isn’t a hot mess. Because it’s actual work to do it properly. Unlike everyone else. Meanwhile It speaks the local C ABI fluently (they differ by architecture and operating system, btw), which isn’t a thing that can be said about many languages that aren’t C.
Differently put: What, precisely, do you want to do? Have you any actual use-case for your doubts, or are they spooks?
It’s a lacking point yes but unless you want to use a closed-source library it’s also a non-issue, which is why it has never been given priority. It’s not like language semantics would prevent portable dylibs it’s that there’s more important fronts to improve Rust on. A proper solution would take quite some engineering effort, and do note that C doesn’t have a proper solution either it just lets you link stuff up willy-nilly and then crash. Rust is actually in a better position to implement a proper solution than C is.
The “big project” thing is a red herring given that rust compiles incrementally. I know it is technically possible to not rebuild everything from scratch in C but the code has to specifically written to not break assumptions your build system makes while rust is happily re-using the compilation results for one function in a file while discarding those of another because actual dependencies are actually tracked. Out of the box.
Speaking of large Rust projects and proper type-safe linking: The WebAssembly folks are hashing out their Component Model which isn’t really limited to compiling to wasm, in principle: Big picture it’s a way to programmatically specify ABIs and even derive ABI translation code. That might be a good option as a rust-specific solution would be, well, rust-specific and when you engineer something that can support multiple versions of a language you can just as well engineer a bit more and have something cross-language.
Writing C bindings to a Rust library is the easier scenario because you can rely on the safe code having nice and clean memory semantics.
It’s mostly about throwing ACID at the problem, sqlite just happens to be battle-tested to a ludicrous degree, it’s light enough to not be unconscionable overhead in simple situations (unless you’re on embedded), and performant enough to also deal with nastier situations so I prefer it over some random K/V store with the same guarantees. It’s also a widely-used and stable data format which might come in handy.
That said, if you want to go lightweight do consider good, ole, POSIX filesystem guarantees, in particular that mv is atomic (as long as you stay on the same filesystem but that’s easy to ensure by mv’ing within a directory). That’s not durable on its own, you’ll need to fsync for that, and consistency and integrity is up to your code.