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

Rob Haisfield 2021-04-26 18:30:44

Could someone create a web browser or browser extension that just adds bidirectional links navigation, filtering, and querying to the web more broadly? Any reason that can’t just be layered on top of URLs already existing on the web?

Brian Cloutier 2021-04-26 18:40:04

Depending on exactly what you're asking for there's no reason other than inertia. For it to become useful you need a critical mass of people contributing to it.

Rob Haisfield 2021-04-26 18:44:31

The most obvious approach I can picture would just be taking URL links that already exist as backlinks. Why would that need a critical mass of people contributing to it?

Brian Cloutier 2021-04-26 19:13:11

Ah, got it, just turning existing links into backlinks, I had misunderstood you!

This is certainly possible, though there are some very real challenges!

  • a bootstrap problem, if you care about links between different domains then it's always going to be incomplete, period, and it's probably going to miss the one important link you're looking for unless you're indexing most of the web. Indexing most of the web is quite expensive! So it'll be hard to get paying customers without first spending a lot of money.
  • The web is mostly trash, so you'll need to put a lot of effort into filtering out the unimportant backlinks
  • You'll probably never be able to index links from places like Facebook and Instagram, and it'll be very difficult to index links from places like Twitter. A large amount of activity goes on in there that you won't have access to!
Chris Knott 2021-04-26 19:54:18

In a fundamental sense, it's not possible because linking is a one-way action. I can link to your website from an HTML file hosted off this laptop - how would you ever know?

In a practical sense you can probably get close because of how much tracking there is in the real internet. I would look into Google Analytics API for that. Or you could try some heuristic like the following Google search; "http://futureofcoding.org" -site:futureofcoding.org which searches for a URL, excluding from that domain itself.

Brian Cloutier 2021-04-26 20:02:09

Google makes it very hard to look for links in this way because revealing too much about which links Google recognizes would greatly help spammers. I think to make anything useful you would have to do your own crawling, probably starting from an index like Common Crawl.

Jack Rusher 2021-04-27 07:31:35

What sort order would you like to use for the backlinks? A page on a popular site can have hundreds of thousands of incoming links...

Andreas S. 2021-04-27 11:39:54

A question for people knowledgeable in smalltalk: Can you send a smalltalk image to another smalltalk image as an object? How would that look like?

William Taysom 2021-04-28 03:06:49

A worthy question and a worthwhile endeavor. Living in he Smalltalk-lite land of Ruby, my firm does have a way of sending object graphs to each other that's somewhat (and could be better) integrated into our bug tracker.

An intrinsic problem is how to merge/switch/select-part of two images. I'm sure there are good solutions just wish I knew about them back when a different group was trying to collaborate with Lisp images.

Thanh Dinh 2021-04-28 03:43:40

That sounds fascinating. Can you elaborate more on your approach to handle Ruby object graphs?

Konrad Hinsen 2021-04-28 16:03:46

There are many Smalltalk systems, which could handle this differently. The one I know is Pharo. It has a class SmalltalkImage, which might look like what you are looking for, but it's really an entry point to access low-level system information. It's not an object that you could archive or send around. "The image" is not an object, it's the set of all objects. Better avoid Russel's paradox by not having the image be an element of itself!

However, you can do things that come very close to what you describe. For example, you can ask class Object for all instances of itself and its subclasses, and send those around the world. That's all objects in the system, including their classes. You might run into resource limits trying to send them from one image to another, I didn't try. If you want to play with this, I suggest Fuel (https://github.com/theseion/Fuel) as the most adequate serialization framework for large sets of objects.

πŸ”— theseion/Fuel

Andreas S. 2021-04-29 07:59:48

Thank you for sharing your insight!

William Taysom 2021-04-29 08:49:35

@Thanh Dinh We're basic. So far we've managed with Marshal.dump and Marshal.load. Classic Ruby dark side: quicker, easier, more seductive. Dump to file, send to somebody else. Is this unsound? Absolutely! But for a decade plus it's only occasionally been a problem: when dumps get into the 100s of MB. A rewrite some years back to use a database like a normal Rails shop failed, so I may try something different. Would have tried already if we weren't living in the end-times.

Erik Stel 2021-04-29 17:57:44

Andreas S what do you want to achieve? For me it is not clear what you want. There are many directions this could go.

Andreas S. 2021-04-29 18:41:48

Just thinking about the relationship between object and image

Erik Stel 2021-05-01 08:04:39

Well I think most Smalltalk implementations will not regard there image as an Object. The VM is probably often the element responsible for reading the image and creating the actual Objects (including Class, CompiledMethod, Context, etc) and continue execution where it left of when being saved.

That said, it would definitely be possible to see it as an Object. A Smalltalk implementation could even run (simulate?) the environment inside a supplied image. Do remember that things like garbage collection are often (must often) be done by the VM. So simulation is not trivial and might require quite a few extra features in the β€˜receiving’ Smalltalk image. HTH

Scott Anderson 2021-04-28 05:51:04

What do folks here think about https://www.mightyapp.com/ ? There is an extreme schism between web/startup people (who mostly like it but have some privacy concerns) and game developers (who universally hate it) going on

Chris Knott 2021-04-28 06:15:10

I'm normally of the opinion that results are what matter, and it's OK if something is made of sellotape and cardboard if it's making someone's life better... but in this case, no, it feels too ridiculous. I guess this is my limit, and I'm definitely on the Jonathan Blow side of the argument.

Mariano Guerra 2021-04-28 07:44:32

the thin/fat client pendulum is changing direction again

William Taysom 2021-04-28 07:51:45

I don't suffer from this, but my wife's laptop is frequently brought to a halt by misbehaving tabs. The operating system browser really should do something about hot running processes pages.

Chris Knott 2021-04-28 11:10:31

the thin/fat client pendulum is changing direction againThere's a bit of a split going on I think. The "cool kids" zeitgeist seems to be going the other direction (e.g. Ink&Switch), both for privacy and performance reasons. I recently moved house and go better internet (70mbps) and tried out Stadia and Xbox Game Pass Ultimate and the performance still isn't there IMO, the ping is very noticeable. Maybe once cloud compute infrastructure is common in every town, like a post office. If you live next to an AWS datacentre, then yeah I'm sure the calculus is very different.

Ivan Reese 2021-04-28 15:25:13

My take: On a Mac? Just use Safari.

William Taysom 2021-04-28 15:35:26

Tried it. 😱

Breck Yunits 2021-04-28 15:52:52

I love it. The M1 has obliterated any need I would have for it in my day to day, however in my data science work I have an insatiable appetite for more power in the browser. I can envision use cases where I'd love to have browser tabs with 1TB of RAM running sims and then just duplicate the tab and change some params and run another sim. In my work on Ohayo and Our World in Data we are not even close to .1% of where data science could be in the browser. A big limitation is the specs of client machines. This could in theory make those caps adjustable and so I'm very long term bullish on it, if that's one of the directions they support

Breck Yunits 2021-04-28 15:54:33

A common pushback I get on this is "why not build a native app". The browser experience is far superior to native apps, IMO. Instant sharing, 10's of billions of devices ready to go, rapid development, etc. So I think all of data science long term will move to the browser tab

Breck Yunits 2021-04-28 15:55:12

Tableau, Excel, etc, all of those native apps will be left in the dust (that's a bet, and I could be wrong, but that seems to me where its going)

Scott Anderson 2021-04-28 16:59:03

Of course if you have to stream a browser, you might as well make one native app that runs on Linux and stream that (Stadia model). I guess it speaks to web development being a preferred stack, or the only stack, a lot of developers know, especially in the startup world.

Mariano Guerra 2021-04-28 17:00:23

isnt't ssh "streaming a datacenter"? πŸ˜›

Mariano Guerra 2021-04-28 17:01:07

and a vpn "streaming a network", a remote desktop is streaming a computer, a web server request is streaming computation/data

Scott Anderson 2021-04-28 17:01:11

Which leads to an interesting FoC conversation, which is if we did move wholesale to dumb clients that render streaming video, what kind of development environment would be ideal for that

Scott Anderson 2021-04-28 17:01:28

Mariano Guerra they are

Scott Anderson 2021-04-28 17:02:25

I think the difference is accessible GUI apps (yes I know Remote Desktop exists)

Mariano Guerra 2021-04-28 17:02:31

I would reframe it as computation that's independent of where it's taking place

Mariano Guerra 2021-04-28 17:03:17

ship the computation near the data or to the computer with the GPU or to the one with more ram and stream back the result

Scott Anderson 2021-04-28 17:03:33

Here I'm talking about a specific implementation, not a general concept

Mariano Guerra 2021-04-28 17:03:54

migrate this browser tab somewhere else so it can keep running, or it frees some resources on the machine it was running before

Scott Anderson 2021-04-28 17:04:44

A remote computer that is just in time provisioned (not owned by the user) renders and simulates an entire application, encodes video and sends it to a client that plays video and sends input to the remote computer

Mariano Guerra 2021-04-28 17:05:35

do you mean accessible GUIs as in "screen reader"?

Ivan Reese 2021-04-28 17:17:40

🍿 (I have 100KB/s download β€” oh, Canada...)

Kevin Greer 2021-04-28 22:57:46

I used to use X-Windows over dialup 30 years ago, so I assume that same technology would still work (but much better) these days. But I don't understand how this is a good idea, since CPU and memory are very cheap and I currently have 73 tabs open without a problem. Maybe we should instead look at why a web email client requires 250M of RAM, when I recall an 8M machine was considered pretty high-end and could run a more full-featured email client with only a fraction of that memory.

Kevin Greer 2021-04-28 22:59:49

And, even then, 8M was considered staggering inefficient by those who were used to Xerox Alto's with <=512k of RAM.

Kevin Greer 2021-04-28 23:02:06

Yes, we're using more memory for higher-resolution screens with more colours, but that only accounts for a small part of the difference.

Kevin Greer 2021-04-28 23:14:48

A big part of the problem is, IMO, that browsers like Chrome are written in an unsafe programming language, and that they mitigate against this risk with a heavy-weight process model.

Mariano Guerra 2021-04-29 08:07:20

The examples mightyapp gives are using apps like figma that take advantage of the extra ram and a good GPU to do things faster on a powerful computer from any other computer, I don't think the main use case is checking your gmail faster or having many tabs open (I could be wrong).

Mariano Guerra 2021-04-29 08:08:35

as Breck Yunits said, as more data intensive applications move to the browser, the same thing will happen with them as with figma, you will be able to run them on your machine for small to middle datasets and migrate them somewhere else when the dataset is huge and/or you want to let it run overnight training a neural net or something.

Mariano Guerra 2021-04-29 08:10:31

I think the ideal for me would be that where you run it is a choice, is transparent (you can't tell where is running except for the performance benefits) and you can migrate things while they run. Thinking which programming models would help achieving that by removing the "browser" part is an interesting thought experiment

Mariano Guerra 2021-04-29 08:14:26

The current context makes the mightyapp people think that this is a solution to a problem people have (and unlike many others, they talk to users), they have to start somewhere, I've seen them mention "an always on computer", this is just the first useful step along a path, if they manage to make each step profitable they may dictate the future of "locationless computing" while others laugh about how dumb it is.

J. Ryan Stinnett 2021-04-29 10:47:51

I wonder how much Mighty does (if anything) to compensate for the round trip latency... With their example of Figma, I assume they get a lot of it "for free" since Figma is already set up for multiplayer editing... I wonder how it performs in other apps that are not already designed for latency.

Breck Yunits 2021-04-29 15:31:24

J. Ryan Stinnett I noticed that they are filtering their initial users for people in SF and NYC (close to their regions). So one way they seem to compensate for latency now is just to allow people phyiscally near a mighty DC

Scott Anderson 2021-04-30 02:55:09

Yeah I doubt they do much beyond require low latency network and that you're close to their regions. It's possible they do something with input buffering or prediction on the browser or even OS level, but I doubt it

Ivan Reese 2021-04-30 14:44:53

Correct me if I'm wrong, but I think they can get a fair amount of half-decent prediction simply by virtue of the way video codecs work. Unlike a game (thinking of Stadia here), where you have a lot of full screen motion with complex transformations, a browser is mostly static images (free to predict), occasional scrolling (typically a large chunk of the screen moving the same direction and distance, trivial to predict), and infrequent whole-screen changes when loading a new frame (prediction is outside the scope of the codec). Modern codecs like h264/h265 handle the first two with aplomb.

Breck Yunits 2021-04-30 18:46:08

That's a fair point, but I do bet the most interesting use cases would be the ones with lots of moving visuals (I'm thinking simulations)

Scott Anderson 2021-05-01 02:07:01

yeah, it's fair, but Mighty is targeting high compute applications that might not care about latency, and probably don't care about latency as much as your average game, but definitely care about latency more than your average web application

Scott Anderson 2021-05-01 02:07:03

like figma

Mariano Guerra 2021-04-28 09:36:05

Which programming systems other than Smalltalk/Lisp Machines do you know about?

Jack Rusher 2021-04-28 10:04:58

FORTH and APL are both quite integrated into an environment and a certain way of working.

Mariano Guerra 2021-04-28 10:30:20

Now that you mention those, Mathematica comes to mind

Deech 2021-04-28 11:54:09

Unix/Bash, Emacs(?)

Kevin Greer 2021-04-28 12:45:04

What's your definition of "system"? UNIX is sort-of the programming system for C. Does Visicalc or Excel count? How about web browsers? I think FOAM would count.

Mariano Guerra 2021-04-28 13:32:12

Development happens "inside" the system, you (almost) never leave it to complete a task

Don Abrams 2021-04-28 13:49:53

Erlang systems have hot code patching too

Don Abrams 2021-04-28 13:50:37

Dtrace and some aspect oriented things as well

Mariano Guerra 2021-04-28 13:52:39

yes, but the development doesn't happen inside the running system and using hot code reloading by default

Don Abrams 2021-04-28 14:00:19

I wouldn't recommend it but maybe OSGI + jvm also counts?

Mariano Guerra 2021-04-28 14:09:16

for the same reason no, java developers don't code inside the jvm where the code runs, the ide doesn't run there either

Scott Anderson 2021-04-28 14:19:58

Processing?

Kevin Greer 2021-04-28 14:26:00

Many Java IDE's are written in Java (Eclipse, NetBeans, BlueJ, etc.).

Mariano Guerra 2021-04-28 14:32:19

yes, but you don't work inside the running system all the time, manipulating live objects, changing them directly, loading new, the IDE being only some other objects in the same system, almost never restarted

Mariano Guerra 2021-04-28 14:33:26

full introspection, interacting with live instances, defining new ones

Mariano Guerra 2021-04-28 14:34:57

if it was the case you would be able to modify eclipse from within itself, without restarting it or having to run any external tool to compile the changes, the concept of compiling and restarting to get the new thing is a good filter of non programming systems I think

Mariano Guerra 2021-04-28 14:37:17

on the game side Dreams, Minecraft, Roblox

Mariano Guerra 2021-04-28 14:38:34

Tudor Girba your input would be useful πŸ™‚

Jack Rusher 2021-04-28 15:01:00

I'll put the "!" where @Deech's "?" is as regards emacs, it's definitely one of the most alive systems. That said, I feel like it's covered by Mariano Guerra's initial mention of Lisp Machines.

Konrad Hinsen 2021-04-28 16:11:16

Mariano Guerra Both Squeak and GToolkit are direct descendants of Smalltalk-80. There are a few more, e.g. the minimalist Cuis (https://cuis-smalltalk.org/). Self, Lively Kernel, and Newspeak have clear Smalltalk inspirations, but are different in important ways.

A good resource to find other, often more specialized, systems is https://github.com/toplap/awesome-livecoding

Don Abrams 2021-04-28 16:18:38

Jupyter notebooks with Kubeflow has both editor and runtime

Scott Anderson 2021-04-28 18:45:44

If you're talking about game/VR stuff, Facebook Horizon, Anyland and RecRoom count

Scott Anderson 2021-04-28 18:49:57

I'm actually not sure if Roblox should count if you're talking about a live environment. Roblox requires a separate install (Roblox Studio) for development

Scott Anderson 2021-04-28 18:54:41

so it feels a lot more like a traditional game engine in that sense. It's a subtle difference but a regular user can't find studio through normal gameplay, and you can only create in desktop environments (PC and Mac), while many of Roblox's users are on mobile or console

Konrad Hinsen 2021-04-30 08:15:22

I think there is one distinction that is often neglected when discussion programming systems or live coding environments: the degree to which the development tools are part of the system. Smalltalk systems (except for GNU Smalltalk) and the Lisp machines have rich tools as part of the system, making them accessible to modification and extension from the inside. Emacs is almost the dual, putting the tool aspect first. Most other Lisps rely on external tooling, while not excluding the possibility of adding it to the inside (e.g. CLIM for Common Lisp, DrRacket for Racket).

nicolas decoster 2021-05-02 09:55:37

There is also Scratch (and friends like Snap!, etc.).

Jarrett Atkinson 2021-04-28 19:37:25

Very un-thought out idea πŸ™‚. I’ve noticed over time that I’m an extremely visual programmer. However, most current attempts at visual programming are bad and or incomplete IMO. Something that might be nearer our current abilities and practicality would be creating a really stupid simple toolkit that allows the interfaces of code to be played with. e.g. some namespace that filters a user list could be like this:

(defn all-users [...] ...)

(defn filter-users [user-list fname-partial lname-partial] ...) 



-------------------------------------

|       ----------        ---------  |

| fname |         | lname |        | |

|       ----------        ---------  |

| user-list                          |

| ...                                |

| ...                                |

-------------------------------------

Basically, bootstrap some simple ui (preferably where the ui design isn’t controlled by the programmer - time sink & barrier to entry) that demonstrates the function live. There would need to be multiple different kinds for different interface types, and probably domain specific ui would need to be developed per project. The primary reason I think for this kind of UI would be for discoverability and getting a high level understanding of codebases.

Stupid? Crazy? Already tried? I’m aware of GT and have followed it a bit, and that seems like the closest match. I think this is a slightly different idea, though correct me if I’m wrong.

Tudor Girba 2021-04-28 19:50:28

GT seems to be different things to different people, depending on how long one looks at it πŸ™‚. But, the idea of moldable development is really that there is no single perspective about anything in a software system. Code and objects all should invite different perspectives, and most of those perspectives will be for reading only, without necessarily providing any editing capabilities. And, when we bring it to its natural conclusion, we do end up with highly specific experiences for each system parts.

Breck Yunits 2021-05-02 06:38:26

I'm a firm believer that the future of visual programming will grow from spreadsheet land (http://worrydream.com/refs/Kay%20-%20Computer%20Software%20-%20SciAm.pdf)

Breck Yunits 2021-05-02 06:39:01

so many sheet based tools coming out (google sheets is the gorilla but also airtable, http://rows.com, smartsheet, etc)

Breck Yunits 2021-05-02 06:40:40

Tech moves in sin waves and I think we're back on a steep upward trend in spreadsheets