You are viewing archived messages.
Go here to search the history.

Kartik Agaram 🕰️ 2021-01-16 06:33:36

Perhaps all programming is distributed programming?

This little thread is melting my mind: https://queer.af/@erincandescent/105562630364133151

My mindset for the past 5 years has been that UX = gradual teaching on demand = never lying to the end-user, which implies never telling big lies, only little white lies that are easy to push aside to learn more. But at the heart of everything I did is the big lie that I'm programming "a" single unitary computer.

I've always known about many little controllers in our computers, but my mind treated them as exceptions. I think society has this consensual hallucination that software runs "on top of" hardware. The past six months (starting from my old realizations about BIOS: https://futureofcoding.slack.com/archives/C0120A3L30R/p1599112907014300) have been a slow, painful journey to come to grips with this fact.

Bat signal to @Charlie; this is fodder for your old thread from May 2019 that most software is built across collections of computers. @Ian Bicking too had a post around the same time that messaging and communication are all, that decomposition is trivial, that focusing on "programming" is often a modernist approach. If we started from the assumption that "coding" is about orchestrating groups of computers, what would we do differently? What does the UX for programming look like if you also have to specify where computations happen? It seems to make Bret Victor's problem much harder. But following Alan Kay, perhaps we don't yet have the "hardest and most profound thing to then build every easier thing out of".

I'm also thinking about Dave Ackley's https://movablefeastmachine.org. He started out in security, so he likely knew all this when he started out on his project. You can't secure your computing substrate if you aren't thinking about 90% of the computers in it.

Anyways, likely the fever dream will break in a day or two and I'll go back to lying to myself programming my little computer. But I thought I'd throw this out while it's fresh.

Konrad Hinsen 2021-01-18 08:01:44

Kartik Agaram I have next to no real-life experience with distributed computing, so I'll leave such questions to others. Everything I have personally used sucks (that's mostly MPI for parallel scientific computing).

Jack Rusher 2021-01-18 14:25:42

+1 with Konrad Hinsen on the terribleness of MPI. I like Actors and pi calculus, but for networked things you really need to build for both component failure and network partition. Erlang is the best thought out thing in production that I've seen in this regard.

Naveen Michaud-Agrawal 2021-01-18 16:21:18

Kartik Agaram I think Smalltalk's original model (going back to Kay's 1-page description of Smalltalk) is that each object in the system represents a mini-computer (or better a computational process). I recall him writing somewhere that even by the late 70s he felt Smalltalk could be done better, and the official Smalltalks had reified too much of the interesting bits to be able to evolve.

Naveen Michaud-Agrawal 2021-01-18 16:27:36

To Stefan Lesser's point, if more SOCs exposed the microcode of the system, it would be possible to defer 'reification' of software to hardware until the last minute, providing a lot more flexibility. So you could imagine a VM that could customize the processor it was running on to optimize the way it ran, ie instead of JIT'ing the running of the VM, you reify the operations the VM needs to run efficiently down to the hardware level. From Kay: "Another example: all the Parc personal computers of various kinds were microcoded, and in the latter 70s you could sit down to any of them to e.g. run Smalltalk, whose image would be sent from a server, and the machine type would select the special microcode for the Smalltalk VM on that machine."

Naveen Michaud-Agrawal 2021-01-18 16:28:48

That quote was from a comment to one of his answers on quora starting with "We need to note that the plan": ` https://www.quora.com/How-old-is-cloud-computing/answer/Alan-Kay-11?comment_id=179237241&comment_type=2

Naveen Michaud-Agrawal 2021-01-18 16:29:26

I think Alan made a comment that's stuck with me for a long time - hardware is just reified software

Kartik Agaram 2021-01-18 16:31:44

I actually sent him my OP -- and he responded among other things with that exact quote 🙂

Naveen Michaud-Agrawal 2021-01-18 16:32:06

ah would love to see his response, if it doesn't feel intrusive to share

Naveen Michaud-Agrawal 2021-01-18 16:32:56

i have a bot that checks his quora feed, i've been devouring his answers and follow-on comments. Always feels like I'm getting a small peak into the blue plane. I wish that he could one day release a book or even a set of his collected writings in one place.

Kartik Agaram 2021-01-18 16:33:08

Actually it was only one other thing: https://www.youtube.com/watch?v=AnrlSqtpOkw&t=135s

Which was interesting to rewatch in this context.

Naveen Michaud-Agrawal 2021-01-18 16:37:19

Yep, I love that version of Smalltalk. I've been trying to see if I could get it running baremetal on a raspberrypi and give it to my kids and see what they can do with it

Kartik Agaram 2021-01-18 16:42:29

I'd love to hear if you do.

Konrad Hinsen 2021-01-19 10:04:40

That video is depressing, considering that what we have today in terms of "personal dynamic media" is at the same time more complicated and more limited. As far as I can see, even today's Smalltalks (Squeak, Pharo) don't support this.

Naveen Michaud-Agrawal 2021-01-19 18:07:15

Kartik Agaram sure, will post here when I get it working. I'm using https://github.com/michaelengel/crosstalk as a base, with modifications to support the smalltalk version used above

Scott Anderson 2021-01-19 18:30:30

I don't believe it is particularly useful to equate heterogeneous computing with distributed computing and use the same abstractions (especially something as high level as an actor model) because the constraints and failure cases tend to be wildly different

Scott Anderson 2021-01-19 18:37:12

I don't know of any consumer hardware that will continue to run if say, its GPU just dies

Scott Anderson 2021-01-19 18:38:14

but in a true distributed system (you usually) care about robustness for potentially many machines that have much different uptime requirements than a consumer device

Ray Imber 2021-01-19 22:16:29

Scott Anderson I'm going to play devils advocate here 😈

I don't know of any consumer hardware that will continue to run if say, its GPU just diesI have a direct counter example:

I have two GPU's in my laptop, the one bundled with my CPU, and an "external" Nvidia card. The Nvidia card regularly has driver failures and my laptop falls back to the on die graphics card.

This is almost seamless, and very much a distributed system. OS kernels handle these kind of driver failures all the time, and they are conceptually very similar to a distributed database that experiences a network partition.

Some more extreme examples are Plan9 "everything is a file" and EMACS TRAMP. Both are examples of abstractions that cross both file system and network boundaries with similar semantics and error cases.

referring back to my earlier story about my National Science Foundation work, there was one group of grad students working on GPU's, and another group working on distributed graph algorithms on AWS. We were part of the same umbrella project, and regularly exchanged ideas about how to solve problems.

The constraints and failure cases are not wildly different at all imo.

Scott Anderson 2021-01-19 22:27:09

Sure, and there are ways in modern graphics APIs to explicitly manage that there are multiple GPUs. The thing is it's very rare that they have symmetrical capabilities, so if you have a work load that actually needs that Nvidia hardware and you switch to intel integrated graphics, you'll have a worse experience. A language with an actor model that abstracts heterogeneous hardware and treats it as a homogeneous distributed system won't really solve that

Scott Anderson 2021-01-19 22:33:58

And making the cases where it doesn't matter easier doesn't really help anyone I guess? I mean potentially there is an interesting abstraction of a "command buffer" (a circular ring buffer that could look a little bit like messages in actor model systems) and an actor could be an explicit piece of defined hardware that has specific capabilities (both fixed function and code) but programming models and capabilities of different hardware are different enough that I'm not sure how useful it would be

Scott Anderson 2021-01-19 22:39:23

Maybe there is a interesting use case where you can use local or remote compute for the same task and its entirely invisible (don't have a GPU and it automatically uses a cloud GPU)

Scott Anderson 2021-01-19 22:52:38

Also device hang\device lost due to a driver crash is not the same as an actual hardware failure. The OS will recover from that, and as a system wide resource it doesn't practically make sense for applications to handle that. In some cases (most of the interesting ones) a discrete GPU failing and falling back to an embedded GPU is effectively a not working computer. Laptops switch regularly but desktops will by default have embedded GPUs turned off, and don't have the same switching capabilities. Consoles and smartphone generally have one GPU as part of an SOC, etc.

Scott Anderson 2021-01-19 22:59:39

The reason I bring up command buffer as an abstraction is because new consoles have custom I/O hardware that uses a GPU style command buffer model for I/O requests, with the assumption that modern games will be making I/O requests at a similar rate they make draw calls. Game engines also generally use command buffers to send commands to a render thread (running on another core on the CPU) to drive rendering on the GPU. It works great when you are mostly pushing data/commands to another device, not so great for frequent two way communication though, because this pattern tends to be used in systems with high-throughput and high latency (relatively speaking, high latency for a GPU is still really low compared to an HTTP request)

Ray Imber 2021-01-19 23:02:21

I don't believe it is particularly useful to equate heterogeneous computing with distributed computing and use the same abstractionsUsing the same abstraction does not mean requiring the same constraints.

And continuing with graphics as an example, things like feature flags for OpenGL are used all the time to provide different feature sets depending on hardware capability.

Similarly, Erlang and most actor models have ways to query the available resources for a particular process. Smalltalk has this as well.

In some cases (most of the interesting ones) a discrete GPU failing and falling back to an embedded GPU is effectively a not working computer.It is a matter of opinion about what is interesting...

The fact that I can still use my laptop if one of the GPU's fails seems pretty damn useful to me personally, even if the experience is degraded.

In the network case, variable bitrate video is also extremely interesting. If my network is suddenly over saturated or degraded, I used to not be able to play a video on Youtube at all, or my video call would be disconnected.

With variable bitrate streaming, the quality is simply lowered.... Same abstraction, that has built in semantics for heterogenous capabilities (dynamically changing capability btw)

Scott Anderson 2021-01-19 23:19:25

Not all applications can gracefully downgrade, and a ton of effort goes into supporting that. For example, Cyberpunk 2077 got delisted because it actually wasn't playable on last generation console hardware. If your discrete GPU dies and you're playing the game on PC it will be unplayable (either functionally or actually due to lack of capabilities). You could apply the same logic to machine learning training and other GPU tasks that require high compute. Also its great that your laptop keeps running, but I'm not sure how a distributed systems approach in a user land application programming language fixes that? Maybe the idea is it could make it easier for driver and kernel developers to implement local failsafe?

Ray Imber 2021-01-19 23:38:23

Not all distributed databases are usable if the network failure is bad enough, That doesn't mean the abstraction is wrong.

There are always failure cases that cannot be recovered from. It does not mean using an abstraction of heterogenous and distributed computing is a bad model (your original point iiuc).

Maybe the idea is it could make it easier for driver and kernel developers to implement local failsafe?This is exactly what things like micro-kernels and Docker do. IPC is a form of distributed abstraction.

Ray Imber 2021-01-19 23:45:09

I'm not sure how a distributed systems approach in a user land application programming language fixes that?The point of exposing these to the user application level is that the application can have a say in how the failure is handled. Cyberpunk 2077 maybe can't run if the GPU fails, but Microsoft Word still can. You want to allow both options.

Scott Anderson 2021-01-19 23:47:55

I guess I'm stuck on... What do we get if we treat a local machine like a distributed system? What features of distributed programming are generally not necessary for local hardware? GPU programmers do have to handle device removed (https://docs.microsoft.com/en-us/windows/uwp/gaming/handling-device-lost-scenarios), which could mean try to reinitialize and reload, and that could mean using a different device, but it also could mean crash or quit. I'm focused on GPUs because I'm a graphics programmer, but I imagine you could apply this to any specific hardware (storage, audio, etc.) Maybe the issue is this all handled at OS level, should be to implement the OS in a different way rather than try to abstract over all OS APIs?

Ray Imber 2021-01-19 23:48:08

Similarly for security models. In docker or CGroups situation, you may or may not have access to a system resource depending on the security policy. Your application can decide how to handle that. Your database may try to set up a database on a certain file system, but if it doesn't have access, maybe it falls back to a memory backed store.

Ray Imber 2021-01-19 23:49:14

I'm focused on GPUs because I'm a graphics programmerI'm a database programmer, so this is fun to compare perspectives 🙂

Ray Imber 2021-01-19 23:57:17

I guess I'm stuck on... What do we get if we treat a local machine like a distributed system?

Maybe the issue is this all handled at OS level, should be to implement the OS in a different way rather than try to abstract over all OS APIs?Microkernels are the best practical example I can think of that try to do exactly this: http://www.microkernel.info

It's more about security and reliability. It does have a performance cost. (Which I'm sure sounds like pure pain to a GPU programmer lol)

Ray Imber 2021-01-19 23:59:50

Your example about cloud GPU is already here as well, That's basically what Google Stadia is.

Kartik Agaram 2021-01-20 00:03:12

When I started the thread I was thinking about all the ways in which non-programmable processors (built out of programmable components!) hide inside our computers. It's a place for bugs and especially security issues to hide. It might be an interesting exercise to ask how we might bootstrap a computer from a single tiny bit of RAM, either by building hardcoded circuits or requiring an upstream device to initialize them. I said "distributed computing" just because it was the closest term I could think of, but it did pull in unintended connotations that it's been interesting to see explored 🙂

Ray Imber 2021-01-20 00:07:28

It might be an interesting exercise to ask how we might bootstrap a computer from a single tiny bit of RAM, either by building hardcoded circuits or requiring an upstream device to initialize them.This sounds like the idea of a microkernel taken to the level of firmware / BIOS / UEFI. Sounds like an awesome research project to explore 🤩

Ray Imber 2021-01-20 00:17:26

I'm also reminded of a podcast I listened to a while ago: https://oxide.computer/podcast/on-the-metal-3-ron-minnich/

Google does some of this kind of thing on their servers, and also on chrome-books with U-root. (Trusting trust type stuff at the firmware level.)

It's frustratingly difficult because the hardware vendors do not want this. It has taken companies like Google, Facebook, and Amazon to strong arm them into opening up their firmware more....

Ray Imber 2021-01-20 00:26:28

Also, Alan Kay's quote as mentioned by @Naveen Michaud-Agrawal

"Another example: all the Parc personal computers of various kinds were microcoded, and in the latter 70s you could sit down to any of them to e.g. run Smalltalk, whose image would be sent from a server, and the machine type would select the special microcode for the Smalltalk VM on that machine."I remember talking to Kartik Agaram about this exact quote a while ago.

The closest modern equivalent we have is probably FPGAs.

Scott Anderson 2021-01-20 01:54:03

Yeah I was probably being way too specific about what the definition of distributed system is now that we're explicitly talking about distributed systems within hardware. Back to the original post, what I know of FPGA architecture, it's laid out in a similar way as MFM

🕰️ 2021-01-15 20:31:03

I was listening to some of the old episodes of the podcast and have been thinking about projectional editing in general. I'm not sure if this is a novel insight or not, but there seems to be some form of equivalence between reading/writing code textually vs with blocks/shapes and the equivalence of algebra/geometry. There are many proofs and problems that seem to lend themselves to geometry over algebra but there are also situations that being able to reason about something algebraically makes it substantially simpler. I think this is the situation where you need both and it's possible at certain levels of abstraction you would want to be able to easily shift back and forth. For example I could imagine a system that had components built in a textual representation but then the component linking all done utilizing shapes.

Jack Rusher 2021-01-18 13:57:52

Blocks/shapes are just one projection that a projectional editor could choose. The good stuff is having multiple possible projections, as per what Christopher Galtenberg mentions. See also https://gtoolkit.com.

Duncan Cragg 🕰️ 2020-12-30 21:14:48

Non technical? Second call for any of you who missed the first call!

If you're not a techie, or have access to someone who isn't, would you be kind enough to cast your normie eyes on this page for me: http://object.network/ ?

Bear in mind it's aimed at folk who are all wound up tight about the issues listed up front, so if that's not you, pretend you are! 😄 (in fact, why aren't you?)

Feedback is much appreciated, so go for it! I'm tough. 🤕

Dan Cook 2021-01-18 19:02:41

I fully agree with what you're trying to do. Data should just BE, and ways to create, share, and view it should be trivial. Good luck with this!

Dan Cook 2021-01-18 19:06:51

I've considered making a drag and drop JSON viewer and editor, that you can just plug APIs into, and then create functionality and views around. So for example, make it easy to get at the data in existing things like FaceBook or your bank account, and combine and interact with or however you want. Maybe something like that could be a good bridge from existing infrastructure, into something like what you're building

Duncan Cragg 2021-01-18 19:34:06

I did have a JSON version of this, and wrote a Node/Heroku server to adapt from multiple sources into it, including Twitter and dbpedia APIs and screen scraping from websites!

Duncan Cragg 2021-01-18 19:34:55

There's a talk I did about that at skillsmatter online somewhere

Dan Cook 2021-01-18 21:29:11

I'd love to see that. I'll look, but let me know if you find the link

Duncan Cragg 2021-01-18 21:53:52

I've been frantically updating the object.network page recently to try and explain things as simply as possible!

Duncan Cragg 2021-01-18 21:54:33

Yeah:

Duncan Cragg 2021-01-18 21:54:39

is really bad

Duncan Cragg 2021-01-18 21:54:42

😄

Duncan Cragg 2021-01-18 21:55:22

The "mapping the web" bit was added by someone else for some reason, I think there was a mix-up

Vijay Chakravarthy 🕰️ 2021-01-16 21:07:30

Well, its not as if you get full programmability at different layers of the stack. Most of the time you have to confirm to specific protocols and data formats, with most of the programmability in a few layers (CPU, GPU, etc..).

Dan Cook 2021-01-18 19:14:48

And tag me, so I can respond? :)

Vijay Chakravarthy 2021-01-19 00:05:50

The joy of slack for threaded messages.. Sorry, will do.

Kartik Agaram 2021-01-19 00:25:05

Yeah, and every group has its own rules, to add to the confusion. Sorry about that.

William Taysom 2021-01-19 04:51:00

(Seriously. I just click follow on pretty much everything here.)

Shubhadeep Roychowdhury 2021-01-20 13:48:45

I have a question, and maybe it is already something that exists. But I do not know and hence asking here (also kind of food for thought). I was wondering if there is any language which has been designed from ground up to make mathematical formalism as a first class citizen. Precisely I was thinking some kind of way to write set builder notation and then built-in functions to perform and generate (here the generate word is used in a double meaning, think about generators, as some of those operations can generate infinite data) basic operations, such that intersection, union, sigma algebra, and such?

It is something I am thinking. As having something like this will open up doors to programming into a lot of mathematical domains pretty accessible. Topology, Measure theory, Order Theory, Category Theory etc. etc.

Jack Rusher 2021-01-20 14:01:21

Consider Agda, for example this recursive set tutorial:

https://people.inf.elte.hu/divip/AgdaTutorial/Sets.Recursive.html#1

Konrad Hinsen 2021-01-20 14:04:44

Not sure anything corresponds exactly to what you are looking for, but Lean (https://leanprover.github.io/about/) is certainly worth a look, as are other proof-oriented languages such as Coq's (https://coq.inria.fr/) underlying language Gallina. Computer algebra systems are another candidate. Axiom (https://github.com/daly/axiom) is huge but also the most likely to contain what you are looking for. There are also more specialized systems popular in specific branches of mathematics, which unfortunately I don't know much about.

Shubhadeep Roychowdhury 2021-01-20 16:13:50

Thanks both of you. I will look into them. Also, interesting to see what it (may) take to build such a system with an extension / library system built in so that people can take the basic system as extend it to the domain they are interested into

Denny Vrandečić 2021-01-20 18:20:13

Fortran was designed to do exactly that

Andrew Carr 2021-01-20 20:10:24

I mentioned this in a other thread but Pure Lang has many pieces that make it useful for both symbolic and computational mathematics

Robin Allison 2021-01-21 06:02:57

Do you have in mind examples how such a language would be used and what it would be used for? What kind of programming would you do with topology? If it is theorem proving in topology then lean seems like the kind of language you're looking for. Just curious.

Shubhadeep Roychowdhury 2021-01-21 09:33:23

I do not have any example right now. It was more of a curious question. However, I am interested in probabilistic logic programming (https://github.com/ML-KULeuven/problog). And machine learning. I have a strong feeling that we can use them together (https://bitbucket.org/problog/deepproblog/src/master/) however, I was wondering that whether we can extend the symbolic domain significantly. And from that thought, this one followed. '

William Taysom 2021-01-22 01:58:19

Yeah, I've a big old directory of probabilistic programming resources, which I plan to ignore hoping for more coherent theory and practice to emerge before I get around to reading any. 😉

Prathyush 2021-01-23 00:03:20

You might like: http://pll.cpsc.ucalgary.ca/charity1/www/examples.html as it is based on CT.

Felix Kohlgrüber 2021-01-20 17:41:01

I was reading some text vs. binary file arguments and one thing that kept coming up was that text files are easier to recover when they get corrupted. I've got a couple of questions regarding this and would like to hear your thoughts:

  • When did you have to deal with corrupted files and what was causing the corruption?
  • How did the corruption look like (single swapped bits, part of the file missing, ...)? My current line of thought is that small errors in binary files could simply be corrected by adding redundency to the format (crc etc.) and larger missing parts wouldn't be easy to recover from in text formats as well. Therefore the argument wouldn't make much sense. I'm curious what you might have experienced as I can't remember to have seen corrupted files in the last couple of years.
Denny Vrandečić 2021-01-20 18:22:00

I saw corrupted files frequently, mostly when they are coming from the network and were cut in the middle, or when a stream wasn't working well, but also as part of memory dumps where some parts of the memory was written over etc.

Naveen Michaud-Agrawal 2021-01-20 18:45:19

In some ways the distinction between text and binary is arbitrary. Text files just have a whole ecosystem of tools that are able to parse (and display) the bits in a certain way. I expect any issues of corruption or error-correction would equally apply to both.

Garth Goldwater 2021-01-20 18:58:53

text files often indicate (to some extent) human-readable files and human-readable files have a lot of redundancy built in—all human languages do

Andrew F 2021-01-20 19:12:10

Yep. When a human reads a file, they can eyeball it to see if it looks corrupt, make a guess at what it should have looked like, and manually patch it. With binary files, usually your parser just barfs. All the recovery steps a human performs have to be programmed in.

As to the actual question, the only time I can remember personally was from downloading ISOs: s couple of them failed their hash check and had to be re-downloaded. Bad disk dismounts are the other classic case, with a broader category of bad disk write/flush handling that can leave a file in weird states (https://danluu.com/file-consistency/). TBH I wouldn't want to hand-restore one of those files either.

Konrad Hinsen 2021-01-20 19:20:49

Corrupted files have always been part of my digital life. The main cause: software bugs. Number two: aborted computation jobs, usually due to resource limitations on batch systems.

For programs that write serialized output, a corrupted file is usually just truncated. That is usuallyl recoverable. But when working on large binary files, random-access modification is quite frequent and can result in just about any mistake.

Felix Kohlgrüber 2021-01-20 20:34:16

@Naveen Michaud-Agrawal The "advantage" of text files is that characters are encoded individually and each character only takes a couple of bytes. If there's an incorrect byte, the corruption is limited to at most two characters. In binary encodings, a single error (e.g. in a length field) can corrupt everything that follows.

But you're right, text files are basically a subset of binary files and all advantages they have could also be achieved in other (non-text) formats.

Tyler Adams 2021-01-20 20:37:47

I think @Andrew F nailed it with "they can eyeball it". It's less of a theoretical math problem and more of a pragmatic "how long does it take you to figure out exactly what the file should be and what it is".

I worked at a data storage company so we'd corrupt binary stuff all the time in dev, it was really hard to tell what was broken when it was binary. I really wanted to, but never got around to, a to_json serializer so I could see system state in a structured, textual format.

Kartik Agaram 2021-01-21 01:50:52

Most people don't appreciate how easy it is to undelete a file on Unix:

  • make the file system read-only (to prevent more writes)

  • grep -n10000 the device of the hard disk, go get a coffee

  • Scan the output in a text editor, find the right section, delete above and below.

If it's a binary file you now need more tooling.

Jack Rusher 2021-01-21 08:28:12

+1 that the main benefits are legibility and the ubiquity of text-based tooling

Mariano Guerra 2021-01-21 09:46:48

in my case corrupted files I've had to handle mostly fall on two cases 1) truncated files 2) a file with a block of zeros at the end

Naveen Michaud-Agrawal 2021-01-20 19:42:11

Question for anyone in the know - was there ever a formal system description of the RealTalk system powering DynamicLand? My current understanding has mostly been pieced together from tweets and a few of @Omar Rizwan's more detailed blogposts. As I currently understand it, the system functions mostly as a federated Linda-like tuple space where wishes and claims are evaluated 60 times a sec and acted upon, and there is a base set of verbs and nouns (mostly related to the hardware) that are implemented in the system.

Cole Lawrence 2021-01-20 19:44:20

Not to my knowledge is there anything online as a specification, because the system was constantly changing and being experimented with.

Cole Lawrence 2021-01-20 19:47:10

I understand that it's implemented as a superset of Lua which probably was getting desugared to Lua. IIRC from my convos with Joshua Horowitz is that the whole system (a couple years ago at least) has one system input "time" which advances everything else forwards.

Vijay Chakravarthy 2021-01-20 19:58:00

There is a photograph of the source of the realtalk system in one of Bret Victors tweets. I believe it used either Ohm or OMeta as the parsing system.

Naveen Michaud-Agrawal 2021-01-20 20:18:35

My understanding is mostly from "Background of Realtalk" section from Omar's "https://omar.website/posts/notes-from-dynamicland-geokit/". Looks like while they've been fairly quiet recently they are still continuing on with research.

Scott Anderson 2021-01-20 23:13:48

I took some photos and videos when I visited a couple of years ago (with the Bay Area FOC group) that I need to share

Scott Anderson 2021-01-20 23:14:00

specifically I have some real-talk photos

Scott Anderson 2021-01-20 23:17:16

Didn't get much but here are a couple

Scott Anderson 2021-01-20 23:23:19

I believe this is a lot of the code that parses\desugars the natural language datalog query language used in "say" and "when" statements, there is probably a lot missing though

Scott Anderson 2021-01-20 23:24:06

I'm also not certain that Dynamicland has made it. Walking by their old space in Oakland it seems vacated, but maybe they just moved

Cole Lawrence 2021-01-20 23:25:42

It has been a wild year with COVID-19.

Naveen Michaud-Agrawal 2021-01-20 23:25:47

Scott Anderson thanks, so most of those pages look like the pure lua bits.

Naveen Michaud-Agrawal 2021-01-20 23:27:19

🐦 Bret Victor: @houshuang @Dynamicland1 We're still hard at work, just keeping quiet for now.

Scott Anderson 2021-01-20 23:28:12

I thought COVID might have done them in because of the physical computing aspect

Scott Anderson 2021-01-20 23:28:36

good thing investors (or whoever is supporting the project now) aren't thinking so near term on this

William Taysom 2021-01-21 02:18:41

Keep in mind that RealTalk isn't really documented because it was always provisional. Beyond two takeaways, the rest of the details (all the syntax, the use of Lua) are irrelevant.

  • Loose coupling between components. They don't directly reference each other. Often physical proximity was the way of doing dependency injection. No need for explicit patching when valid wirings are mostly unambiguous.
  • Having a distinction between "wishes" and "claims" where a "claim" tells you something about the world, and a wish requests that the world change to have some quality.Can't think of anything else. I mean there's the whole spacial/collaborative aspect of Dynamicland but that aspect is pretty obvious.
Naveen Michaud-Agrawal 2021-01-21 13:12:01

@William Taysom thanks, I think you've nailed the underlying idea. Everything else (projection and computer vision, use of Lua) is just an implementation detail of the current manifestation. I expect that if touch-reactive eInk and arduino/microbits were cheap and easily programmable, the whole RealTalk system could have been built using that hardware.

Chris Knott 2021-01-21 19:42:23

Scott Anderson What did you make of DL?

I want to like it because of how much I love BV's work, but... it just doesn't click for me, from what I've seen...

Vijay Chakravarthy 2021-01-21 20:38:27

I visited Dynamicland and tried to give Bret some ideas for fundraising. This was when they had lost the funding from SAP. My advice to him was that he should make a version that could be run on a single desktop (mini projector and cam mount of sorts) so that people could build these as kits for the home. I also suggested abstracting out the events similar to what TUIO has done. Not sure that that was part of his plan, but oh well....

William Taysom 2021-01-22 01:54:36

@Vijay Chakravarthy "TUIO?" To me it seems Bret worries a lot about people misinterpreting his intentions and so an important part of Dynamicland was to maintain a certain clarity by making a hard break from conventional computational systems.

Working under the same roof as the IHMC Robotics Lab, I was always jealous of visceral immediacy of the robots. You can simply see people working on them whereas practically all screen activities have a certain disengaged, lazy posture. Since then, I've been keen to make the abstract more embodied.

It is somewhat unfortunate that reality developed a strong bias against the kind of close in-person collaboration that Dynamicland envisions.

Vijay Chakravarthy 2021-01-22 05:38:52

I actually think we are at the beginning of what will be a big shift in user interactions for computing. Given the prevalence of multiple devices and visual and auditory understanding of intent (via AI) I think that there is a big shift possible in how people interact with computers in both single and group environments. For the group environment just the fact that everyone brings their own touch surface (mobile device) is a pretty interesting model for collaboration.

Naveen Michaud-Agrawal 2021-01-22 13:33:58

I wonder if Bret is worried about people 'missing the point' if they work too much in the open, and only the surface ideas spreading memetically, similar to what happened when Jobs visited Xerox PARC and only saw/internalized one of the three things (the GUI) that he was shown at Kay's Learning Research Group.

Jacob Haip 2021-01-22 18:20:18

I have been greatly inspired by Dynamicland and have spent the last couple years playing with these ideas (https://programmable.space). My thoughts on the Dynamicland system: The focus is on the objects and how they can interact and be understood, rather than the current implementation of code or the “papers and dots” Augmented Reality system.

Important points not related to the code or RealTalk implementation:

  • Always on. Key to making the system more casual.
  • 1-to-1 relation between seeing an object in the world and it having influence on the world. This is key to understandability.
  • Use affordances of physical objects, rather than trying to solve them in code. The tangibility is important here, but using physical objects can also reduce the scope of what code has to do. For example, your code becomes simpler if you don’t have to worry about fitting modals, tabs, and substates into a single screen if you can separate them across many papers/programs. This also includes using the spatial relation of programs to influence control flow.
Jacob Haip 2021-01-22 18:20:34

That being said, there are some interesting things on the technical side that support the physical side:

  • Shared tuplespace is a good fit for ideas that are “the size of a room”. Data is pretty small and doesn’t need to run “at production scale” so it can be kept simpler and more understandable.
  • Pub/sub like system using “claim”/“wish” + “when X” is a nice and simple way for programs to communicate.
  • - The system bootstrapping itself is also interesting. There are a lot of AR-desk demos but being able to edit the system without having to switch back to a traditional computer GUI is cool.
Cole Lawrence 2021-01-22 18:30:35

@Jacob Haip programmable.space has a lot of really cool ideas in it. Thanks for sharing!

Scott Anderson 2021-01-22 22:48:26

I was less excited about it after visiting, but I still like the ideas behind it. Most of my disappointment was with implementation, which is maybe the wrong thing to critique in a research environment, but it's still something that matters. Specifically the overall latency of the system was disappointing, it was challenging to code or interact with any programs that felt immediate. When I was there they said latency would be addressed, but it's also a hard problem given the implementation of the system. The other thing I didn't like so much was that claim\wish\when system wasn't well utilized in most of the tables they had in the space. That is, usually a single page or two felt like a self contained application, and the dream of a loosely coupled dynamic play space that required little coding to compose interesting and useful behaviors wasn't realized. There's no reason I could see that they couldn't support it, and some of the debugging tools gave a glimpse of that, but it was really hard to pick up a random page from one table, bring it across that space and have it do something interesting (or at all) with other pages. Designing a semi-shared set of common claims (outside of system level ones to access lower level drawing, audio, etc. functionality) would have made it more interesting I think.

My favorite demos were things that worked around these limitations and also showed something that would be tedious to do outside of the environment. Like the demo where you could draw multiple sketches and have them automatically animated on another page. Latency didn't matter, because you got much more immediate feedback than if you did this with a camera or a scanner in a traditional computing environment. Another one I liked was a simple book (like the equivalent of a CD album booklet) where you could turn the page and play different songs, with text with the song and artist name. In some ways the projector system might be a good visual equivalent to an audio home assistant (Alexa, Google Assistant, etc.) I really wanted to see more, here are a bunch of building block pages, compose them however you like. I think back to Nicky Cases concept for visual programming (below) in Dynamicland, and although I don't think I just want that, the actual act of programming in dynamicland was writing lua scripts on an extremely text laggy editor, with poor error\compile feedback, and I would have liked to build things with the same ease and in the same natural way as interacting with some of the demos

📷 image.png

Naveen Michaud-Agrawal 2021-01-23 01:50:36

Scott Anderson Thanks for your impressions. Just to situate them, would you be able to say how long ago you visited? From what I understand the space is constantly undergoing change, so it could be that some of the physical implementation issues were fixed in later iterations.

Naveen Michaud-Agrawal 2021-01-23 01:52:36

The only detailed description I've seen online is Omar's geokit post, and that seems closer to the ideal of independent, loosely coupled play space (especially the ability to leverage other physical objects like the dial to interact with the maps)

Scott Anderson 2021-01-23 01:52:40

It was in March of 2019 with a bunch of other current and former members of this Slack, I thought it was longer than that but it was just 2020 wrapping my sense of time :)

Scott Anderson 2021-01-23 01:53:11

Geokit is still one of the few detailed descriptions online

Scott Anderson 2021-01-23 01:53:20

There are a few others I believe

Scott Anderson 2021-01-23 01:53:39

But nothing as comprehensive

Naveen Michaud-Agrawal 2021-01-23 01:53:43

and his followup post on using raspberry pi's as the IO for DynamicLand

Scott Anderson 2021-01-23 01:56:29

there's this but it's not very technical, more about the history of Dynamicland and it's creation https://tashian.com/articles/dynamicland/

Scott Anderson 2021-01-23 01:57:09

There is some info about pieces of Dynamicland that preceded it, like natural language datalog and La Tabla

Naveen Michaud-Agrawal 2021-01-23 01:59:42

Yep, I've seen those.

Scott Anderson 2021-01-23 02:00:08

@Glen Chiacchieri talking about Laser socks got me excited about the space early on, this was years before my visit http://glench.com/LaserSocks/

Naveen Michaud-Agrawal 2021-01-23 02:01:21

The tashian article is interesting when talking about the funding aspect. I've often wondered how much funding CDG would need per year - Alan's talked about how he would 'buy' the future to be able to build/research it in the present.

Scott Anderson 2021-01-23 02:01:45

but the Geokit blog is the only comprehensive public write up about how the system actually works, specifically what its like to make a program for Dynamicland

Garth Goldwater 2021-01-23 02:08:03

@Naveen Michaud-Agrawal iirc they were looking for $60mm to be around indefinitely or something on the order of 1mm-500k/yr

Vijay Chakravarthy 2021-01-23 02:48:14

The funding model is unsustainable. My advice to Bret was to use the creativity of the team to fund small kickstarter like projects. There are immediate applications of the technology to education especially childrens education. I even had a few venture capitalist friends (I know, thats an oxymoron :)) that suggested that funding for such initiatives could be arranged. I think its better to be in control of your own destiny than to be beholden to large corporate grants where the political climate change can cause those grants to vaporize in a heartbeat.

Vijay Chakravarthy 2021-01-23 02:50:36

Garth Goldwater when I spoke to them they were burning 150k a month I think.. the facility itself must be about 30k rent. The individual salaries for about 10 researchers would be about 2 MM a year fully loaded. So ballpark I assume around 2.5 M burn per year.

Garth Goldwater 2021-01-23 02:50:57

that sounds about right to me

Garth Goldwater 2021-01-23 02:52:34

that would be around 4% of 60mm

Vijay Chakravarthy 2021-01-23 03:03:36

Operating cost per facility is likely to be 500k - 1MM per year. I think they wanted to replicate this model for large number of facilities. IMHO it would be better to miniaturize the model (raspberry PI + some tiny projector), hook it up to the cloud (so you can do realtime collaboration) and sell it for a bunch of use cases. They could even then fund the library model plus allow educational institutions to copy it for free.

Glen Chiacchieri 2021-01-23 13:07:06

@Vijay Chakravarthy I think I can tell you with some certainty that your ideas about funding are very off the mark for how Bret wants to run research

Glen Chiacchieri 2021-01-23 13:08:20

I would bet that in Bret’s thinking “products/markets are where research goes to die”

Scott Anderson 2021-01-23 18:17:45

They could have moved to a less expensive location, but yes researcher costs aren't going to be cheap no matter what

Vijay Chakravarthy 2021-01-24 06:19:29

@Glen Chiacchieri I’m well aware of that. I’ve done both research and entrepreneurship - IMHO I feel that Dynamicland had potential not just to be a research facility but also to influence real product development.

Vijay Chakravarthy 2021-01-24 06:21:33

“products/markets are where research goes to die” - and Bret would be wrong. I see a full reflection of the naivety that came along with Xerox labs and other places where people treated the commercialization of technology as something beneath them rather than a problem to solved.

Mariano Guerra 2021-01-22 10:20:20

If you could make one niche idea related to FoC into the mainstream, which one would it be?

Chris Knott 2021-01-22 14:51:55

Time travel debugging

Konrad Hinsen 2021-01-22 17:20:27

Some overlap with @Jared Windover’s proposal, but not exactly the same: malleable systems https://malleable.systems/

Garth Goldwater 2021-01-22 17:46:33

(splitting the messages so preview works): https://m.youtube.com/watch?v=8k6n1m4leQo

Ivan Reese 2021-01-22 19:00:30

Dissatisfaction with the status quo, but one specifically informed by an awareness of history and the myriad possibilities just waiting to be explored.

Denny Vrandečić 2021-01-22 19:22:35

Democratization of coding

Breck Yunits 2021-01-23 15:49:03

FOC is not "No Code" or "Low Code", it is "Grow Code"

Tak Tran 2021-01-24 22:51:11

Getting away from keyboard + mouse (and even flat screen) interactions, to make digital things. Bret Victors 2011 rant on http://worrydream.com/#!/ABriefRantOnTheFutureOfInteractionDesign is still very much relevant. I hope I don’t have to stare at a screen to be a digital maker in the future 🚀

📷 Hands.jpg