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

Alex McLean 2023-11-08 09:58:45

An online event I'm co-running - Algorithmic Pattern Salon 2023

Talk sessions over five days, exploring contemporary and heritage algorithms in weaving, braiding, music, typography, live coding, juggling, etc etc

salon.algorithmicpattern.org

Christopher Shank 2023-11-08 17:22:31

I love this, definitely planning to attend!

I’m just starting to learn how to crochet and it was both suprising and intriguing that we have not yet been able to reproduce these types of stitches with a machine.

(Edit: Ah this will probably be brought up in Julias talk, excited to learn more)

Alex McLean 2023-11-08 18:31:27

Yes she mentions that in her written submission, will be making that public it on the weekend.

Alex McLean 2023-11-08 18:32:15

I think there's a lot of weaving techniques that machines aren't able to do as well

Jarno Montonen 2023-11-09 07:04:06

It's still early, but what do you all think about levlo.com? Any feedback is welcome, but I'd especially love to hear how do you understand the product based on the messaging on the site. What would you build with it?

📝 Levlo

Levlo is a textual no-code platform that allows you to create, share, and monetize expert applications without coding. Start building your app today!

Alex McLean 2023-11-09 11:57:42

'textual no-code' looks a lot like code to me! what am I missing?

Jarno Montonen 2023-11-09 12:00:49

yeah, it's a bit difficult term, but the best I came up with.. The point is that you're not actually writing text, but using a graphical user interface that, among other things, only allows you to input valid tokens for any given location.

Jarno Montonen 2023-11-09 12:02:12

there is no parsing, so the 'code' can look a lot more like natural language. "Programming in plain English" is another label I've used for it.

Alex McLean 2023-11-09 12:05:07

Fair enough! I'm being picky. I think if you squinted I think you could say any text editor "only allows you to input valid tokens for any given location". I'm not sure if it's plain English. I think this might be called a 'structure editor'?

Jarno Montonen 2023-11-09 12:10:56

I'd say basically all text editors allow you to type anything anywhere. Like you can type "1 ++" into your codebase even if anything you would add afterwards wouldn't make it valid code. And yes, this is structured/projectional editing.

Alex McLean 2023-11-09 12:14:29

I mean you can only type characters in a particular set (e.g. ascii, unicode) within a fixed grid.

FreeMasen 2023-11-09 15:30:04

I think the term you might be looking for is literate programming?

Jarno Montonen 2023-11-09 16:00:35

Well that's the programming language research field term yes, but would tell absolutely nothing to potential users 🙂

Mike Austin 2023-11-09 21:15:09

Hmm, yeah it's still code with if/else/+/-/</> tokens. If there's a small grammar, it could be nice to use, but for example AppleScript... I can't stand it, as a developer or non-developer. There are so many rules to the grammar that it makes it impossible to remember how to write it correctly.

... set AppleScript's text item delimiters to theSearchString

The order of nouns, prepositions, verbs, plurality, it's not just longer than code, it's more confusing.

Mike Austin 2023-11-09 21:19:06

How do you build a UI with it? What does a simple application such as a To-do list look like?

Mike Austin 2023-11-09 21:48:11

Will there be support for numerical units? "travel distance > 10". 10 what? I think I understand it more.. it's like a textual (vs grid) spreadsheet?

Jarno Montonen 2023-11-10 06:31:10

I suppose it's bit of an academic discussion that what is code and what's not. I do still like to refer to what's written with Levlo as "Levlo code" too. I'd just point out that natural English does have if/else and mathematical operators when used in specific domains. The operators could easily be replaced with words in Levlo, but I thought it'd be unnecessarily verbose.

Initially the idea is to target use-cases where a custom UI is not necessary (such as spreadsheet use-cases), however you'll be able to hide parts of the code and apply some styling to end up with a form UI. You can also host your Levlo App as a REST API so that it takes some of the inputs as query parameters and returns some of the computed values as results. This would allow you to build a completely custom UI for the logic implemented with Levlo.

Jarno Montonen 2023-11-10 06:37:29

You're probably right that if the grammar ends up being massive with many ways to write the same thing, it'll probably get difficult to use. But Levlo is not parsed so there's a lot more flexibility in designing the grammar than what AppleScript developers had. Also Levlo is able to offer the user an exhaustive list of valid tokens for any given location, so 'browsing' how to continue should be a lot easier.

Jarno Montonen 2023-11-10 06:41:48

Also, yes, my intention is to take the type system very far with numerical units, ranges, sets, and verified computations between different units.

Mike Austin 2023-11-10 19:22:19

Maybe it's not "code", but it is logic (logical and/or) and math, which code also uses. A structured editor that feels free-form is always nice. Some possibly related links:

news.ycombinator.com/item?id=28009218

ibm.com/products/operational-decision-manager

Jarno Montonen 2023-11-10 20:05:50

Yeah, it's certainly logic and maybe I'd call any textual definition of logic "code", but then no-code refers to "not general purpose programming language code", not "not definition of logic", and textual doesn't mean a sequence of unicode/ascii/etc, but something that you can read as you read text. 😅

Interesting links! Thanks! Although, I'll pick Levlo over any of the tech listed 😄

Mike Austin 2023-11-10 21:18:03

It is sounding more like en.wikipedia.org/wiki/Logic_programming, with rules/clauses, formal logic.

Tomaz Zlender 2023-11-09 09:25:32

I've published an essay Personification of computer processes where I introduce a metaphor that will allow us to program computers in a game-like (and also in "Dynamic Land"-like) environments. The website Latent Centers is a digital garden I started recently where I will continue to publish related work. The aim is to invent computing that makes us feel more alive.

I'm looking forward to hearing your thoughts!

Tomaz Zlender 2023-11-09 09:30:24

(For the best experience, visit it on a desktop device. I haven't adapted it to touch devices.)

Mike Austin 2023-11-09 21:31:31

For me, coding comes down to functions, variables, and values, as you mention in the article. If you were to do the same personification to math for example, how would you do it?

Brian Hempel 2023-11-10 00:17:21

The Program Counter represented as the active entity, walking through function execution. I like it better than I thought I would. It has ToonTalk vibes, but with fewer agents, so much more constrained, more grounded, and less confusing.

Tomaz Zlender 2023-11-10 19:03:06

For me, coding comes down to functions, variables, and values, as you mention in the article. If you were to do the same personification to math for example, how would you do it?

@Mike Austin I'm curious if you had in mind some examples from math when you wrote the question. I assume that the subsets of math can be personified in the same way. I'm curious what examples you have in mind! Thanks for asking!

Tomaz Zlender 2023-11-10 19:18:40

The Program Counter represented as the active entity, walking through function execution. I like it better than I thought I would. It has ToonTalk vibes, but with fewer agents, so much more constrained, more grounded, and less confusing.

Brian Hempel it does have ToonTalk vibes, happy to hear you find the idea compelling!

For many years I tried to find something similar to "beings" as the personification of processes. (I still haven't found it). Then at some point it occurred to me that maybe I can ask Alan Kay himself if he knows of anything like it, explaining the idea along the way. If I recall correctly I heard him claim in a couple of talks that most of the things have been invented in 80s or something along those lines. So I thought, well, let's put it to a test! To my surprise he replied back and pointed out Ken Kahn's ToonTalk. It is indeed done in a similar spirit, but not quite. The closest thing to beings in ToonTalk I would say are "robots", but they can't be controlled directly as beings can. They have a more specific role, not as general as beings. Like you say, there are many metaphors in Toontalk and it gets confusing because of that.

Interesting that you had an association with the Program Counter. What part of the article made you bring it up?

Mike Austin 2023-11-10 19:29:27

@Tomaz Zlender You could say that code is (mostly) just logic and math. If you turn variables, values, and function into different abstractions, what about the math and logic? What makes it different that those abstractions aren't changed? My head is kind of cloudy today, the right words aren't coming out 🙂

Mike Austin 2023-11-10 19:31:07

Another example, how would you describe an anonymous function: (x => x + 1)(5) . It is a function, but has no space/portal equivalent if I understand.

Tomaz Zlender 2023-11-10 19:35:28

Another example, how would you describe an anonymous function: (x => x + 1)(5) . It is a function, but has no space/portal equivalent if I understand. (edited)

Good question, the future examples will make that more clear. The anonymous function has a definition, which maps to a space, and even though it is "anonymous" it is still possible to point to it one way or another. I think the "portal -> function name" is confusing, I need to change it to "portal -> pointer to a function". Does that make it more clear?

Tomaz Zlender 2023-11-10 19:38:27

what about the math and logic?

I don't have a good answer to this one, I'll have to think about it

Brian Hempel 2023-11-10 21:48:34

the Program Counter

I watched the vid and only skimmed the writeup. The Being is doing the current step of execution. That’s what the Program Counter Register is in hardware: the current step of execution.

Duncan Cragg 2023-11-10 14:29:09

Hi everyone, my latest article on The Object Network and OnexOS is out:

open.substack.com/pub/duncancragg/p/turning-the-blob-inside-out?r=1sq2dz&utm_campaign=post&utm_medium=email

It discusses "The Blob" - apps - and how we can free our data by "simply" not having those nasty apps coming between us and our precious digital stuff...

📝 Turning the Blob inside out

Idiosyncratic apps come between you and your data...

Duncan Cragg 2023-11-10 14:30:03

It's quite short and readable, I think. Let me know what you think!

Duncan Cragg 2023-11-10 14:31:05

The Inversion illustrated is actually the inversion from imperative to declarative architectural style.

Michael Gummelt 2023-11-10 19:37:20

We're experimenting with a novel form of "Programming by Example", similar to Excel macros: plato.io/blog/introducing-macros

I think it can scale quite well to a complete programming system with branching, looping, etc.. Thoughts?

Mike Austin 2023-11-10 21:08:03

How would branching work? Drag/press a condition button? Record two macros and mark them as branches visually?

Michael Gummelt 2023-11-10 21:11:22

@Mike Austin We're experimenting with a few variants. The most straightforward is your first suggestion, but the challenge is maintaining a consistent state. Macros are recorded with a "recording context", or an example of the parameters needed to run the macro (e.g. a single row of a table). But once you introduce conditionals, those parameters might not be valid for all branches (e.g. update if a record exists, insert if it doesn't).

So one option is to prompt the user to choose a different context (e.g. pick a different row).

Another option is more in line with your second suggestion (took us longer to come up with it, though :)). The user records a macro for a single context, then we alert them to a failure or possible failure for other contexts (not always possible, but usually is), and then they record a separate macro for that context.

This is more in line with classic "Programming by Example" systems such as the one described by Bret Victor (worrydream.com/MagicInk), where multiple examples are provided and the system tries to generalize.

Brian Hempel 2023-11-10 21:51:30

where multiple examples are provided and the system tries to generalize

This approach fails. Just have the user write the branch condition explicitly.

Michael Gummelt 2023-11-10 21:54:39

Why do you say it fails? To clarify, we're not trying to do any "smart" inference. Just trying to come up with a scheme that's more inductive.

For instance, if you record a macro that accepts some input, searches for a row, then updates the row, that may work for your first example, but it will fail when the row doesn't exist. We can prompt the user when they hit that failure, and ask them what they want to do.

I agree it won't work in all cases, but we think there might be common patterns that will get us pretty far.

Brian Hempel 2023-11-10 21:55:08

Is this representation editable, or must you redo the demo if one of these inferences is wrong?

image.png

Michael Gummelt 2023-11-10 21:55:20

It's not editable yet, but we're working on it.

Michael Gummelt 2023-11-10 21:55:45

Also, those aren't inferences, they're recordings of explicit user actions.

Brian Hempel 2023-11-10 21:59:18

We can prompt the user when they hit that failure, and ask them what they want to do.

Maybe Eager did this? It sounds okay. But what you don’t want to do is implicitly try to infer the branch condition.

I’ve seen many PBD systems and the amount of work to demonstrate to try to get the branch condition is very much greater than the amount of work to just say the branch condition.

Michael Gummelt 2023-11-10 22:01:31

I didn't know about Eager. Thanks!

Are you aware of any PBD systems that only record explicit actions? All of the research projects I'm familiar with try to do an "observe and infer" approach, which I agree is too fragile.

Michael Gummelt 2023-11-10 22:03:13

For instance, our plan for looping is to make the user explicitly say they want to run a loop over a collection, rather than to try and infer that they're repeating actions for some set of elements.

Brian Hempel 2023-11-10 22:08:07

Yeah less inference is better. If you could also add the loop after the fact, that’s even better. That’s where the editable program representation is helpful.

Michael Gummelt 2023-11-10 22:10:04

Yea, SmallStar is the most practical I've seen. But all of these systems operate in the desktop metaphor. Have you seen any that operate on structured or relational data? That's our context, and the problems end up being quite different.

Brian Hempel 2023-11-10 22:13:29

“Why Programming by Demonstration Systems Fail: Lessons Learned for Usable AI” Tessa Lau. 2009. citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=37c50b0cc3c701b269c18014dd3a0c07f9c2b4b8

Most of these are solved with an editable program representation.

Michael Gummelt 2023-11-10 22:15:29

Awesome. I have some nightime reading 🙂

Brian Hempel 2023-11-10 22:18:03

Have you seen any that operate on structured or relational data?

Surprisingly, not off the top of my head (nor in my quick search). Closest I can find is Gneiss, which is great in its own right. cs.cmu.edu/~shihpinc/gneiss.html

Mike Austin 2023-11-11 02:30:26

Wow, SmallStar goes waaay back. I was going to say something like PhotoShop actions.

Michael Gummelt 2023-11-11 02:31:53

Photoshop actions doesn't solve the hard problems like conditionals, AFAIK, though.

Mike Austin 2023-11-11 05:16:49

True. Just one example of macros that came to mind. I'd imagine they would have solved some interesting problems being how old PS is, though. I haven't use it in many years.

Jack Rusher 2023-11-11 07:36:53

As strange as this might sound, the most powerful and usable PBD system I’ve ever seen is… emacs keyboard macros (the name’s a misnomer, they also record other types of events, like mouse gestures).

Gregor 2023-11-11 12:01:11

I have started experimenting with a mobile shader editor and wrote about it over on my blurgh: dflate.io/shady-phoney

You can play with it here: shd.is

And if you wanna signal boost me: mastodon, bsky & twtr

But most of all I'd be curious to read your thoughts, associations, etc. 🙂