Ng talks about upcoming opportunities for entrepreneurs exploring AI technology and addresses questions of responsibility and risk.
Ng understands the technology, yet, in this talk concentrates on opportunities.
Ng talks about upcoming opportunities for entrepreneurs exploring AI technology and addresses questions of responsibility and risk.
Ng understands the technology, yet, in this talk concentrates on opportunities.
refuses.github.io/preprints/hypermedia.pdf
Title: What Can Software Learn From Hypermedia?
I really like the premise of this paper and the first few sections of this paper, framing hypermedia as an underlying medium in software.
Hypermedia was introduced not as a subgenre of software, but as a different conceptualization of what software is.
I'm not too excited by their implemented solution though (Webstrates). Still, the premise can be taken in many other directions I imagine.
What are the problems you see with the Webstrates implementation, other than those listed in section 7 of the paper?
I assume you mean section 5. The discussion of limitations is excellent. I say I'm not too excited because I feel building this on top of the current web model makes it very hard to solve these key issues, which need newer fundamental abstractions. Once we're trying to make things more granular and secure at a less chunky level, we'll have to forego the web url and use some other identifier scheme for each of these hypermedia objects.
One aspect that I think hypermedia in general does not explore well but is touched on by this paper is representation of dynamic computation within the same medium. Specifically, since dynamic objects evolve locally with user interaction, can the evolved versions of these objects, and the intermediate execution traces, also be represented and shared in the same medium? This seems critical in a system where hypermedia is the underlying medium for software. Handling this needs a lot of design work around what the fundamental abstractions of this medium should be. For instance, determining what kinds of links may exist between hypermedia objects, how composition of objects works (is transclusion enough?), what's the relation between the dynamically produced and static objects, and so on. I hope this paper inspires more work at the design level.
Yes, the eternal problem of having to use existing technology in order to get anything done and then being limited by those technologies. My current view is that we have to accept these dynamics and thus accept that all progress in complex technology is incremental. That doesn’t make it less frustrating, but at least I can stop thinking about it.
In case you’re not familiar, Tchernavskij’s follow-up work in his thesis (theses.hal.science/tel-02612943) goes beyond Webstrates.
Thanks for sharing the paper Shalabh Chaturvedi! I completely agree about the limitations of building on top of the current Web model. I've never seen Webstrates as a solution, it's our vehicle to explore ideas that's difficult to explore with conventional software.
Niels Olof Bouvin and I also did a shortpaper for hypertext where we experimented with some old hypermedia principles on top of Webstrates: klokmose.net/clemens/files/classical-hypermedia.pdf
I've for a long time wanted to explore how to make a 'proper' hypermedia system with qualities like the ones you point out Shalabh Chaturvedi. A good place to start for inspiration is the Dexter Reference Model for Open Hypermedia (dl.acm.org/doi/abs/10.1145/175235.175237), but as far as I remember, it doesn't address the type of dynamism you talk about.
We've multiple times talked about how we can have a more general transclusion model in Webstrates, e.g., supporting partial transclusion but it turns out to be quite a fundamentally challenging problem on many levels.
Thanks for the great links Clemens Klokmose. Will take me some time to go through them. I feel originally hypermedia has mostly been about sharing immutable content. I’ve been thinking a lot about hypermedia as the underlying medium for software and find it very compelling. Mainly I’m thinking about how to represent the dynamic aspects of computing and programming itself via hypermedia: active hypermedia. The idea would be to represent program source, derived structures, executions as well as the output in the same interlinked hypermedium. I don’t have a lot worked out but partial transclusion isn’t that useful in this context. Most references, transclused or not, are to objects with predetermined levels of granularity.
How I think about it, its probably more like high granularity transclusion than partial tranclusion so that aligns with what you are saying.
One way of integrating computation into Webstrate's DOM-based approach is term rewriting. All code and data is just tree structures, which fit nicely into the DOM. That's probably not a good basis for embedding a video codec, but it could be fine for high-level manipulations that vernacular programmers would want to do.
Term rewriting is an interesting idea. Cant speak for webstrates but in the model I’m thinking about, one of the goals is that the medium should be able to accommodate various programming paradigms.
I enjoyed this article on Missing the Point of WebAssembly. Count me as one of the people previously "missing the point" by this definition. I now feel less inclined to explore wasm in my web dev work, and more inclined to explore it in my VPL work.
The article reminded me of the nice concept of narrow waists, which is exactly what WebAssembly is according to the author. My impression is that this is more a promise than a reality at the moment, but... wait and see.
That’s been my dream! It’s just too large to learn from scratch, and when I found a half dozen embeddable VMs, I couldn’t get any of them to work. 🤦‍♂️
I think the author is over emphasizing web assembly's novelty though ... if you take the para starting "But WebAssembly is a new point in this space ..." and substituted LLVM/JVM/CLR/... you'd end up with an equally reasonable result.
I do see WebAssembly as a modern version of the idea behind JVM and CLR (less so LLVM, which was always marketed as a toolkit for compiler backends). What's new then in WebAssembly is (1) lower-level code, less oriented towards a specific programming paradigm (OO for JVM)) and (2) better adaptation to different environments (browser etc.) and security (sandboxing).
I enjoyed this article as well. Interestingly Newspeak uses wasm as the implementation platform. The narrow waist concept is apt I feel. It still seems not fundamentally new, being ABI-like IIUC and essentially still a single node local environment. Still, it seems to raise the bar for the ABI-like abstractions.
Can someone clarify the idea that boundaries facilitate composition? That seems to be very important to the argument, but I'm not quite grasping how.
A 1¢ example would be, like, any API (or any interface). It defines the ways in which you may compose the code you're writing with the code on the other side of the interface.
This talk on Moldable Development gives a nice introduction: youtu.be/g4MVyM7Vrn0?si=VEuVoxqkTYLjCyPB
Really liked the take on digital library :
đź“ť Folk (Browser) Interfaces
I think of these as folk interfaces, akin to the jigs one makes in wood-working. Divorced from grandiose ambitions of building comprehensive systems, it leads the programmer to directly engage with data.