The CPU on most machines is quite proprietary. I don’t understand this faux purity dogma.
Practical computing is not and never has been an abstract pure concept. It’s about making machines built by corporations to do usefull things at scale.
There is no ”non proprietary” computing unless you make your own stack.
Yes but there are business costs to using high-level proprietary tools and libraries. If you write your app using win32, you won’t be able to port is very easily. You’re also stuck with whatever bad or bizarre decisions Microsoft made.
It’s even worse for CUDA. GPUs are expensive, and now you’re vendor locked. You’re between a rock and a hard place. Either spend millions in engineering time, or millions on price-gauged hardware.
” If you write your app using win32, you won’t be able to port is very easily.”
This is wrong way around.
If you don’t support the platform your app runs on using the native api:s to the hilt your port is just bad.
If you actually want to support multiple platforms _you actually need to support_ them from the ground up.
This is speaking industrially and businesswise. A professional software business always has per-platform implementation resources. Or they have just one platform. Or they pretend they are multiplatform and then _everybody_ _daily_ fights with the problems this causes.
Obviously those elements that can be portable should be. It’s like Einsteins simplicity maxim - your codebase should be as portable as can be but not more.
” It’s even worse for CUDA…”
No these are just the business and market constraints. If this does not make sense for your offering then don’t use it. This feels like false FOMO - CUDA is not a silver bullet but it might be a specific solution to a specific problem.
It really depends on the application. The reason web is so successful as a platform is because it’s rich enough for most applications, and inherently cross-platform at an OS level.
And Re: CUDA: yes if it doesn’t make sense then dont use it. That’s sort of my whole argument. It might make some level of sense from a technical perspective, but that needs to be balanced with business risk. I’m saying a lot of people aren’t doing the balancing right, which is why these new tools have value.
Correct, most of Linux user land targets API stability, not ABI stability. Windows targets ABI stability because applications are typically distributed as binary blobs. Most applications on Linux are open-source and built per each distro, so it’s a non-issue, just recompile.
This doesn’t work for proprietary software that’s distributed as blobs and rarely updated, like say, video games. But that’s a minority of stuff on Linux. But not on windows.
Realistically, on Linux applications target specific API versions of frameworks. Like Qt 6, or GTK 3, or whatever. Then everything is compiled or dynamically linked at a per-distro level. The ABI compat can bite specifically when distros enforce strict dynamic linking. But then containerization technologies come in.
And there is a difference between API and ABI stability. For example, adding SSO to std::string in C++ broke ABI, not API. If you recompile it’s fine, everything works. If you don’t then it doesn’t.
Dead wrong. Win32 (externally) only seems stable, but internally it changes between Windows releases. Win7 syscalls are completely different from Win11 syscalls, meaning if I want to release a binary _without relying_ on Win32 I need to provide full syscall mappings _for each and every Windows version_. This doesn't happen on Linux.
That's literally the definition of it being stable. Programs written against an interface keep working despite the implementation changing. The Linux kernel also constantly changes internally but programs written against syscalls keep working, so it is stable; that fact doesn't stop being a fact just because I dislike perf_event_open(2) or whatever. This is all very basic and easy to understand.
I wonder which APIs you would use to port easily, because POSIX and Khronos aren't it either, as they are industry standards driven by companies where one has to pay for a seat at Open Group and Khronos offices.
Porting has never been hard. Just follow the platform guidelines. Make sane architecture. Done.
I mean _it's just work_. You don't need to invent anything. Just do the work.
What _is_ hard is when people run after silver bullets to avoid all this work.
Because people who don't understand software decide it would be cheaper to implement something only once. Or someone who does not really understand what they are doing insists that same C++ code runs automatically on all platforms.
AI has given the software engineers permit from the beancounters to do the sane thing.
Good software development orgs _have always_ done proper per platform ports.
Also - there is nothing wrong in supporting only one platform as such!
> Good software development orgs _have always_ done proper per platform ports.
I really wonder why this was never fundamentally fixed. How performant a certain instruction on a specific platform is, how well it is supported and potential equivalents or sets of other instructions to emulate an equivalent are usually all very well understood.
So there should be some graph of operations which can transform any software from and to the specifics of each platform. Especially because firmware + compliers + platform abstracting libraries are basically already just that graph, although (usually?) to lossy to be applied in reverse. Add the recent developments in very large scale statistics to it and it'd probably be quite possible to transform from and to generic intent in the implementation to the uniqueness of each platform. E.g. the theming differences between a MacOS UI and a terminal application served over serial or the processing capabilities of a VLIW CPU compared to a FPGA or a GPU server.
Considering the enormous amount of work that went into compilers, better debugging and intermediate representations it seems like a huge missed opportunity nobody seriously asked the question whether information could be emitted that would allow for decompiling all the way back to the generic intent.
I can program all my non-CUDA GPUs use completely open non-proprietary toolchains. And if that ceases to be the case on one platform I can switch platforms without having to rewrite all my code.
SketchUp does not really have that either if you are expecting something else than triangles. Since sketchup has polygons you could argue they are brep but even then only accidentally.
Architecture works with a bit different ruleset than mechanical cad.
" if you want something that can be manufactured that's not good enough"
People design all sort of buildable things in SketchUp and it's just about dragging polygons around.
You _may_ need accurate surface if you run your model to CAM.
But to this day lot of manufacturing is still done via drawings and there the only thing that matters is that can you draw some type of lines and attach clear dimensions to them. So the shapes don't necessarily need to be accurate for all flows since they are more like topological hints to the person reading the drawing rather than accurate replica of the thing to manufacture.
As a highlight the lofting tool is pretty fun complement as it allows combining multiple drawings in an intuitive way to define a certain category of complex 3D surfaces without too much effort (https://adashape.com/manual/adashape/en/shp-loft/).
I've been chipping away at manual as well - and found it was a really good idea to write my changelogs in product voice as I can more or less recycle that copy text into the manual verbatim https://adashape.com/manual/adashape/en/
> Modern sheep grow their wool continuously, but that took a while to breed in.
No they don't.
In the summer their wool starts to grow out much thinner, like maybe a quarter as thick - it's really noticeable. This gives what's called a "rise", a gap between the sheep's skin and the thicker coarser wool. Once that's high enough to get shears (or these days, machine clippers which are like a big beard trimmer) into you can shear the fleece off.
If there's no rise you haven't a hope in hell of cutting it.
If there's a good rise it practically falls off.
If you leave them long enough or if the rise starts growing in too soon, they'll start "casting" where their wool just falls off in big chunks. This is actually quite dangerous for them because it's itchy and they roll on their backs to scratch, and get stuck upside down with their legs in the air and suffocate.
And you thought sheep farming was easy and fun ;-)
I thought animal farming in general is an arcane science.
My friends have goats but they aren't farmers and they haven't got a clue how to care for them. The females sometimes are left with milk in their breasts after their young are weaned and one of my friends will get anxious about that and ask us to help her milk them. It's impossible. You can't milk a goat that doesn't want to be milked. If you push them too hard they lie down so you can't reach their teats and that's that unless you want to have three people lifting the goat up and another one trying to milk her while she squirms and kicks. I don't trust the milk either. Once in a while they succeed in milking a goat and when I tried the milk (after boiling it) it was sort of gritty, like it was mixed with sand. It was not impurities from the environment because I filtered it through a muslin so I think the animal may have had some infection like a mastitis or something that affected the milk's texture.
I bet farmers know exactly what to do about all that or probably they know how to get the animals used to milking when they're still young so that the won't resist it that much. I've watched videos of goats being milked and it looks almost effortless when a pump is used. The goats just line up in their feeding trays and then someone walks up to them from behind, pumps out their tits and moves to the next one, bish bash bosh. My friends don't even have a dedicated structure to feed the goats, we just throw hay for them on the ground so they end up fighting.
My friends really have no idea how to care for the goats, it's rather sad. The owner of the farm has even said he wants to get "wild" goats that don't need to be cared for. By that he means a herd of goats that have gone feral and roam the hills in a village nearby. He thinks because nobody actively cares for them and the herd persists that must mean the goats are somehow self-sufficient. I think that's a big misunderstanding. Domesticated animals need a lot of care one way or another.
I think I'd prefer to have sheep though, if I had animals. Sheep look much nicer than goats.
I absolutely love goat's milk and I would love to keep goats, but they are every possible kind of a pain in the tits to deal with.
A neighbour of mine had a goat that we thought had some terrible thing happen because she was choking and gagging and frothing at the mouth like some cartoon rabid animal. Nope, far simpler. She'd eaten a grey lycra-and-elastic sports bra off the washing line, got a bra strap hooked over her tongue, and the rest of the bra down her throat. Hooked the strap with my finger, pulled it out in one quick deft rather unpleasantly squelchy motion, and ten seconds later you'd never have thought there had been anything wrong with her.
The bra went in the bin.
Bloody goats.
Your friends either need to learn how to care for goats - if only there was some world-wide repository of knowledge with books and videos and stuff! - or give them a good home somewhere else. They're probably hard to milk because as you say they're not used to being handled, and it may be too late to do that by now. If that's the case, you may never be able to milk them no matter how you handle them, and maybe you can breed from them, or maybe you can give them a nice new home, cosy and fragrant, along with some onion, garlic, ginger, cumin, coriander, and chilli, with a kilo or so of spinach too.
As an aside, you probably want to get yourself a copy of "Self-Sufficiency" by John Seymour, and have a read of that.
XD My friend got her skirt munched. While wearing it.
I totally think it's like you say: the goats have never learned to be milked and now they'll never learned. The new generation might, but who's going to teach them? Not me because I'm only there half the year (when it's hot and I don't want to move).
>> As an aside, you probably want to get yourself a copy of "Self-Sufficiency" by John Seymour, and have a read of that.
Pretty much all domesticated sheep will cast their fleeces.
There are some breeds that don't, and obviously due to random genetics you'll get individuals that don't.
Sheep that don't cast their fleeces are damn near impossible to shear and are mostly kept for meat. Likewise, sheep that don't have much of a "rise" (see my other comment) and are difficult to shear quite often, uh, don't have a particularly long career, as it were.
Practical computing is not and never has been an abstract pure concept. It’s about making machines built by corporations to do usefull things at scale.
There is no ”non proprietary” computing unless you make your own stack.
reply