made using Leaflet

End User Programming Reading List

Core readings

Potluck: Dynamic documents as personal software
Gradually enriching text documents into interactive applications
https://www.inkandswitch.com/potluck/
Embark: Dynamic documents for making plans
Gradually enriching a text outline with travel planning tools
https://www.inkandswitch.com/embark/
Engraft
Engraft, an API enabling composition of live & rich programming tools
https://engraft.dev/

BONUS docs

interoperable visions
Every interoperable app becomes a super-app.
https://utopia.rosano.ca/interoperable-visions/

see also: pointing at the wrong thing

Home-Cooked Software and Barefoot Developers
The emerging golden age of home-cooked software, barefoot developers, and why the local-first community should help build it
https://maggieappleton.com/home-cooked-software
Inkbase: Programmable Ink
What would be possible if hand-drawn sketches were programmable like spreadsheets?
https://www.inkandswitch.com/inkbase/

More background

End-user Programming
A vision for empowered computing that reaches back forty years. Our research lab examines why it has been so hard to achieve.
https://www.inkandswitch.com/end-user-programming/

Things to look into

How data is represented

Reactivity

The composition/relation of interface primitives


Questions that come up

What might be some interesting approaches to programmability or dynamic docs that are less about data manipulation, and more about interpersonal communication / social dynamics? (e.g. rather than changing variables, programming how you want people to share or comment…)

How should we think about the balance and tradeoffs of flexibility vs. clear legible shapes, like leaning strongly into the "document" as framing metaphor rather than a more open-ended app or site-builder?

Are there interesting ways we could use transclusions beyond just like link previews, and make externally sourced data more manipulable? One example might be social profiles or @-mentions that allow you to interact with other people in different ways (maybe with bluesky/atproto!)


Notes

Celine's Notes

Embark

i love embark. it's on some good shit

Celine's Notes

Embark

i love embark. it's on some good shit

Its an interesting learning that the muse style widget board, while good in theory, was ultimately less useful than the simple linear doc format

In looking at this, and in thinking about how i would come to this system in leaflet (ie a leaflet for planning a trip), the hard part is not really in generating the little widgets but in coming up with what i need.

I wonder if i would arrive here organically? It seems like Embark generally has been arrived at organically?

Widgets i think would be useful if they had a less document constrained UI

a widget to pull in flight data

scheduling/timelines for the day (people love to do this in google sheets)

not just points on the map, but also routed (pampam?)

oh! they did do this! you could maybe add multiple stops on the route to show the plan for the whole day?

Its an interesting data syntax thing that they've done here... we will have to do something to store data on these custom components, and we will have to provide some way to change things. It would be incredible to change the data in a data UI and have then change the source code to match it. It sounds... hard to do this bi-directional source of truth...

the data storage is elegant. I wonder if having something similar would be more robust for us as well. We have a like "getVars" which pulls all things "xxx: xxxx" and attributes and values i need to think harder about what exactly this unlocks...

in the recipe usecase... what if in your ingredient sectio you wrote things as "sugar: 20g, flour:100g" and later in your instructions, you could write something like mix sugar and flour" and you hover to see their values. OR "mix [sugar * serving size] and [flour * serving size]" and i could hover to see values based on my serving size. There's something here... maybe.

i guess more importantly, it's important to keep the data elegant so that date and time and other common attributes between widgets are the same, rather than siloed. that way, if i want to combine two blocks in some way, that data is unified.

Being custom for something specific still has some nice pluses like being fairly confident in how things ought to repeat, it maybe makes coordinating the data layer that much simpler.

this also seems like its not end user programmable per say. You couldn't pull your own weather from your favorite weather app for example. Since all the widgets are hand built, it's easier to have a unified data system... right?

The biggest weakness of embark as a consumer product is that its just too complicated. It makes sense for the person who has built this app from the group up, as it holds all the things that they need it to and they know exactly why its there. But it seems like a LOT of features for someone just getting started.


Potluck

Brendan's notes

(full notes in Roam; didn't add here to avoid noise)

Potluck - thoughts / takeaways

Brendan's notes

(full notes in Roam; didn't add here to avoid noise)

Potluck - thoughts / takeaways

I think underplaying the importance of visual interfaces not only for aesthetics but legibility / clarity / interaction affordances

what could make this less about data; more about interactions, communication, publishing, social dynamics, etc.?

very on the personal side of the spectrum vs. something for wider collaboration or public viewing

I'm less excited by computations…the little widgets = dope though

can we go beyond docs vs. apps? like where do "websites" of "networks" or "platforms" fit in?

how can we balance flexibility with scaffolding or boundaries that make it easier to do things? shared / reusable library of patterns is a cool example

to me, clear that the all-text UI is quite limiting…the question is how to make it more composable without being unwieldly?

I'm into the annotation layers + options there!

on what vectors do we care most about versatility? composability?

Engraft - thoughts / takeaways

this is very cool, though many steps + not super intuitive for a new user without e.g. seeing the whole intro video

needs an interactive demo!

also, many steps and the recursive nested stuff can be a bit hard to follow…for now seems better for programmers than typical end-users

the / complete menu seems useful but needs better documentation, both for what each thing does + how they plug together

Embark - thoughts / takeaways

this feels richer + more interesting than the previous one!

still limited in practice, but can see how it'd be extended

made using Leaflet