@kainino0x@litherum After that, watch Aliens, but for an entirely different reason. Basically every sci-fi action trope you can think of originates from that movie, as well as huge swaths of game inspirations.
Watching The Verge’s super cut of Google I/O, here is what I took away from it:
AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI AI
When Vulkan submits work to the GPU, it can schedule a fence to be signaled when the work is complete, and…
The CPU can:
ask if the fence is signaled right now (without blocking)
synchronously block the calling thread until the fence becomes signaled
But there’s no way to hook it up to an event loop?!?! Like, there is a way to turn the fence into a file descriptor, but passing that file descriptor to select() or epoll() does nothing?
@DaKangz it’s surprising that fences' completion would be guaranteed to occur in a total ordering, when seemingly nothing else in vulkan is guaranteed to occur in a total ordering. Do you know where in the spec it describes this behavior?
Thought experiment: imagine if Google decided not to go with Vulkan on Android devices, and instead either decided to double down on OpenGL, or decided to invent their own modern GPU API
@litherum Granted, but that didn't match the reality of how most people actually used the API (at least on Windows, which is where I had the most experience). No matter what version you were ostensibly using it was still accessed as a pile of extensions.
Watching The Verge’s super cut of Apple’s iPad event, my thoughts:
I, like, don’t understand why they made the neural engine 60x faster. Like, which iPad apps use the neural engine rather than the GPU? If I were the product designer, I would nix the ANE completely and use that die space for a better GPU (which apps actually use)
I, like, don’t understand why any professional would use an iPad Pro rather than a Mac. They even use the same chips! Trying to make the iPad better than the Mac for productivity seems entirely futile. At this point, an iPad with a keyboard and trackpad seems like a late Soviet knockoff of a real computer. If it were up to me, I would stop adding pro features to iPads and would spend the engineering effort adding pro features to Macs instead. I’d let the iPad focus on education and kids.
Are the protesters at Columbia in the tents harming anyone? Are the tents blocking people from going where they need to go? If not, I think Columbia should just leave them be.
Suspend the ones saying antisemitic things, yes, but if people just want to set up tents in the middle of a quad …. Go right ahead?
And if the students are asking you to divest yourself from companies making a profit from war … maybe that’s a good idea and actually do it???
@litherum@raph
I remember attending talks about a distributed memory system over such clusters, called TreadMarks.
I was struck by the motivating observation that it was lower latency to page memory across the network than to local disk. (But disks were actual spinny metal back then.)
I just realized that Objective-C exceptions won't release objects alive on the stack, even when ARC is enabled, which ... really limits exceptions' usefulness
It seems like the only time any Objective-C code should ever throw an exception is when the only sensible thing the process could do is to immediately exit
The description of grid and its features (which takes up 2/3 of the post) should be its own post - because it's so detailed, it detracts from the purpose of the post, which is (ostensibly) to ask for developer feedback
In C, switch turns into a jump table. But in JavaScript, there's no such thing as a jump table (the language is much too high level for that). So, in a switch, each case: is an expression that gets evaluated in order.
So, instead of:
if (foo()) { ... }
else if (bar()) { ... }
else if (baz()) { ... }
else if (quux()) { ... }
you can do
switch (true) {
case foo(): ...
case bar(): ...
case baz(): ...
case quux(): ...
}
“eBPF bytecode has recently become a target of higher-level languages. LLVM added eBPF support in 2014, and GCC followed in 2019. Both toolkits allow compiling C and other supported languages to eBPF.”