3,898 karma · joined August 29, 2015
so our job is really to kind of look at all the possible topological sorts of that 'after' ordering, and ensure that they are all correct, and if not, add additional edges by using locks or whatever mechanism.
kind of more interested are techniques like mvcc and crdt, which make _any_ causal ordering of events (topo sort) result in a meaningful answer.
but if you look at classical simd for example, we have concurrency (and parallelism) without additional constraints, because the threads are strongly synchronized at the hardware level.
so I find saying that we have one or the other to pretty misleading.
the best was having everyone with a disk cross-mount each other. any failure snowballed into a global failure.
I spent overly long trying to learn on sherline tools and once I gave up and bought a Bridgeport and an old Logan, I realized that I was just banging my head against the limitations of the tools.
the value they had was that they were cheaper than the smaller version of the standard toolroom machines, and they were a way to bootstrap yourself without having the heavy power and the floorspace. so pretty much the storefront, not the IP. I still have their 4" rotary, and its actually not bad. the mill had a huge amount of flex in the column that made it pretty unusable for me unless you took really really tiny passes.
I had an old Unimat for a couple years, and while that was even _more_ dodgy than the sherline the fact that it was all steel and a combined mill/lathe made it a lot more interesting. would rather see some community standards for tooling on a platform like that. maybe a 50% larger so setup isn't so fiddly.
this goes back decades, its not just a feature of the 2020s. as a systems programmer I always want this, and the idea that allocator state should be completely hidden and implicit is shortsighted.
but yes, it is a bit onerous to pass around allocator(s). the real complaint that I have is that if 'malloc' is global and a compiler primitive, then we can do things like coalesce allocations and have compiler managed lifetimes when appropriate.
explicit allocators are an important lever, its not clear to me that we could never find a way to make them possible without the minor downsides.
but its not, the old IP model is still intact, except these guys get an exception. and they get to scream bloody murder about distillation. they get to use their massive funding to try to draw a moat around that knowledge and expression with the goal of rent seeking from this point onwards. I'm not supposed to be able to access the original works anymore, but instead the proprietary, newly biased, blender output that contains a little bit of it.
also not at fan of what its doing to the creative process, but you're right here. that's on us for being so easily seduced and not being able to limit ai usage to solving rote problems instead of creative ones.
for example we could completely obviate Facebook by having a standard mechanism for something like an rss feed. individuals or organizations could publish my stream(s) from their own leaf connections, set up cloud instances, or pay someone to host them. there could be a whole ecosystem of readers with various UIs and policy filters. people/organizations could add value by aggregating trusted streams or filtering them for content some people might find offensive. and at the end of the day it doesn't require people who just want to use it to set up persistent networking and storage.
in any case we just got suckered into handing the keys to the internet to companies like Meta and Google, which make vast amounts of money to control the discourse in corrosive ways. all because we bought into the notion that nothing is real unless someone is making a buck off it.
having a standard and a whole space of compatible programs doesn't preclude people from making lifestyle money selling filters and aggregators and content, but it kind of removes the Meta-style leverage over the whole system.
so I don't think one can achieve that by maintaining 100% compatibility. a much smaller base system build with better semantics that was notionally compatible would be something I would be really excited to contribute to.
personally I find when you view events in a distributed system as a partial order, its more liberating than confusing. its not unusual to assume that there is some kind of canonical event ordering that we have to preserve, when its often just not semantically important. so its a useless constraint that can impose complexity and limit the solution space. the partial ordering exposes the real causal constraints.
but yes, right now you install all kinds of services and support nodes, and distributed filesystems, and orchestration tools and software management tools and job schedulers. every cluster is a bespoke mess that takes a large staff to maintain and is always broken.
this is kind of the projection of web software onto hpc clusters.
in the 90s it wasn't nearly as hard to run a supercomputer because it was an integrated software platform. they were still a lot dodgier than the needed to be. but you could run a 64k node system with one support person, and there weren't really very many support tickets because things just mostly worked.
but I certainly can't imagine trying to do a company that solves this problem. or I should say I keep trying to and just seeing failure. part of the issue is that the people that you are selling to are personally and monetarily invested in the status quo. I don't think they _want_ to relieved of the burden of messing around with Kubernetes all the time, and having distributed filesystems that need to be nursed all the time, or having provisioning tools that have a 80% success rate and take hours to spin up a node.
20 years later people are still sshing into nodes to fuss around, and treating cluster nodes like pets. it still could be done pretty easily, I guess its not really in anyone's interest to invest the 2 years it would take. there is a lot more money to be made nibbling around the edges of the problem.
personally I would like to flip this around, all of this is a consequence of some really extreme notions about investment. its a tail-wagging-the-dog. the investment community is apparently in love with the idea of an AI-scale vehicle in and of itself. given the amount of power they have, this is funneling a massive amount of resources into something that while really very interesting, probably would never be able to realize proportionate gains without taking down the system that built it. what's the societal control on that.