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

Andrew F 2021-12-13 13:26:35

I finally got my list of high-level goals in semi-presentable shape. I'm most interested in feedback on whether they make sense from a communication standpoint, but also which parts of them sound feasible (there are a few, even ones not marked "stretch", that I have a feeling will not be possible). If nothing else, maybe they inspire you, contrast interestingly with your own goals, or whatever. I've just pulled out the very high-level philosophical goals from my list, plus some terminology that I use weirdly. The full doc has a lot of technical ideas, but it's still, um, raw. I'm not sure about what I linked here but the rest definitely reads more like an insane screed.

https://gist.github.com/andrewf/c6774d1bc8ad793b4b3e3172ba13f6b0 (Oh, about the title: "Fern" has been my codename for this project for a good ten years. If you stalk my github you'll see some of my first-ever attempts. 😄)

Konrad Hinsen 2021-12-13 17:42:59

Some of these goals are partially in contradiction. It might be useful to identify such pairs as lines of tension.

Example: "good defaults" vs. "don't hide things from the user". Unless all defaults are always visible (e.g. pre-filled entry fields). using a default effectively hides the existence of a choice from the user.

Andrew F 2021-12-13 19:53:05

That's a tricky UX problem for sure, but I don't think it's a contradiction. You should be able to inspect your defaults, even if you don't feel like changing them. Somewhere down the line there's probably "see how this thing was generated" UI operation that you can use on generated content of all kinds, including defaults, materialized views, etc.

Would it be better to say something like, the information should be possible to access by some reasonably short and predictable route (depending on how obscure the info is), not that it needs to be on display all the time?

Konrad Hinsen 2021-12-14 07:16:12

That sounds better, but it only pushes the limits of the contradiction a bit further out. In the end it all depends on the number of default values. One or two are easy to handle. Ten are a UX challenge, but doable. When you reach a thousand, the mere number makes it impossible to make them easily accessible. You need to sort them by relevance, which is already a judgement that developer and user may not agree about.

This is an essential feature of computing, which philosophers label as "epistemic opacity". Once an information system has features that exceed the cognitive capacity of an individual, new rules apply.

Andrew F 2021-12-14 23:05:14

Sure, at some point you're just reading the source code, and no clever UX can save you from how hard that is. But before too long you've zoomed in far enough that the defaults and specific preferences are just data with no particular relationship, and the defaults/visibility tension is no longer even well-defined. Honestly, any way of finding out what an app is thinking that's more accessible than hooking up a debugger is an improvement on the state of the art.

Nick Smith 2021-12-15 03:15:45

I have trouble commenting on these sorts of high-level goals. They all sound reasonable, but many of them are vague or extremely broad, and the measure of success is unclear. The document reads like a general guiding light for the human race, rather than the set of goals for any one project.

I would fare better at commenting on narrower, more concrete goals for a particular project, especially a language design project.

William Taysom 2021-12-15 04:33:48

If you're looking to refine this brainstorm into a presentation, try to: (1) tighten up the list, (2) provide specific good/bad examples, this helps with vagueness, (3) show connections between your bulleted items.

Andrew F 2021-12-15 05:47:10

I imagined it as a sort of purely conceptual piece, but that's a classic blunder in math pedagogy, so maybe examples are in order here too.

The intended context is that these are the first section of a longer text document that gets progressively more concrete and detailed, going from these philosophical goals to (very much WIP) technical ones, with each layer referring to previous ones for justification (chain of reasoning is important, because some of them get pretty weird). That would be where most of the meat is, and maybe I've been assuming that those will serve as examples that clarify the very abstract parts. So I'm reluctant to make this part longer. Maybe one of those side-by-side formats would be good with examples and explanations off to the right?

With what I've given you, maybe it's enough that people aren't actively confused on what I'm even saying. Like I said up front, this is primarily an exercise in whether I can convey the ideas at all. I've historically had trouble putting them into words at all. I know it's a little weird using this slack as basically a writing critique group, by that's where I am right now. :)

I almost posted, and still might, an even more abstract question about what even can serve as justification for, e.g., one set of data modeling primitives over another.

Nick Smith 2021-12-15 05:51:13

I’m not confused by the wording of the broad principles you’ve outlined, but I'm confused as to the justification behind them, and whether you plan to act on any or all of them, and how 🤷‍♀️.

Dalton Banks 2021-12-17 05:46:08

i’m surprised how many of the intuitions line up given there are practically no hints on implementation. 😄 only thing that jumps out is the ‘platonic realm’ - worth noting even that’s encoded in physics (as are bits), and ultimately intent is a world-derived model. i wonder if you resonate with this writeup: https://alexanderobenauer.com/articles/os/1/

Andrew F 2021-12-17 06:32:46

Yes, my concept of the end user UI is extremely similar to the one in your link. If that OS existed today in a way that was interoperable with the rest of the world I would have to consider shelling out serious money for it.

I'm realizing I have a hole in my definitions of intent as written in bits and platonic intent. The practical upshot is that I want to write my intents as if in terms of a non-physical platonic intent (and don't want to get into the philosophical question of whether that's meaningful when all/most of our intents arise in the real world :D). Certainly, programs written that way (exceptions for low level code) should be independent of any particular encoding of the things on which they operate.

Deepak Karki 2021-12-14 22:13:37

Is there a curated list of university / industry labs working on “tools for thought” or “end user programming”?

Basically tools that help people - gather & disseminate information, structure knowledge and create things!

This would include things like - Muse, Coda, Notion, tools to explorable explanations, new programming languages & environments, rapid prototyping / end user tools, visual debuggers and observability, code walk through tools, github copilot, tools to create media (like 3blue1brown’s Manim engine), Information foraging & discovery tools (inciteful, connected papers, litmaps), etc

Srini Kadamati 2021-12-15 04:16:31

I would look at HCI (human-computer interaction labs), but honestly / arguably … a lot of computer science, data science, and information science research falls under this umbrella. Don’t forget about all the hidden / lower level inventions that needed to happen to let us dream of cool new tools / interfaces for thought!

Denny Vrandečić 2021-12-17 01:54:54

"tools for thought" and "end user programming" are very very different things from an academic perspective

Srini Kadamati 2021-12-17 13:45:07

how so

Denny Vrandečić 2021-12-17 17:54:12

how are they even similar? a paper and a pen is a great tool for thought, but have nothing to do with end-user programming. and programming a Lego Mindstorm robot is done by an end-user, but has nothing to do with being a tool for thought.

Using one to facilitate the other is an explicit choice, and should be a conscious and well-reasoned decision.

Srini Kadamati 2021-12-17 17:56:19

yeah I guess these days its fashionable to focus ‘tools of thought’ to ‘computational tools of thought’, but you’re right that the framing there is too specific

Ivan Reese 2021-12-19 03:47:22

These days, "tools for thought" is popularly used to refer to all the Roam-likes, even though they hardly cover a sliver of the original meaning of the term.

Tom Larkworthy 2021-12-15 06:13:48

Hi it came up in Nick Smith community meeting that it's hard to figure out: what represents the groups contemporary thought or greatest hits. Slack can be a bit ephemeral, so is there a way of surfacing and curating info for longer? @Orion Reed suggested using emjoi reactions as a signal to direct a slack bot.

I see this same problem in the Observable community where the best notebooks get lost after they fall off the /trending page. People are individually curating "amazing notebooks" collections but individuals run out of impetus at some point so the efforts are patchy.

I have been thinking about solving this for the Observablehq community for a while. Some kind of system to submit URLs to notebooks and a way of tagging them -> leaderboard with voting dynamics. Its basically reddit but scoped to a single domain. I do not have a good handle on the details though, how to incentivize long term content (vs reddit which is very churny)

Anybody got any other ideas or inspirations. Community curation seems like a common problem. Is there a solution? Does someone want to give me direction on what they would like to see?

Shon Feder 2021-12-15 14:25:02

My feeling is that voting mechanics are fundamentally at odds with deep and sustained collaborative work.

Shon Feder 2021-12-15 14:26:33

I think the wiki model is the best I’ve seen for this kind of thing. Ncatlab is a great example.

Shon Feder 2021-12-15 14:29:12

The problem with voting based system is that they subordinate their ordering to popularity metrics which means fashion rules. It’s too common for unpopular ideas to be critical/decisive but end up overlooked for lack of popularity. In fact, this is a lot of the reason we’re in the current mess we’re in, afaict.

Shon Feder 2021-12-15 14:36:10

The group blog is also nice, but for different purposes than the organization of deep collaboration. The n-category cafe is a good example of the success of this I think! Or lambda the ultimate.

Tom Larkworthy 2021-12-15 15:11:41

yeah maybe voting is not a great idea. The part that was more interested in is indexing niche interests through group tagging, so you can find what interests you.

I see ncatlab has some kind of topic cross linking which is helpful for exploring and discovery.

n-category cafe doesn't have anything, on my initial look it doesn't seem to be particularly discoverable, am I missing something?

In the observable world notebook is the unit of content (which is very close to a blog post). In FoC a slack thread is the unit of content.

In ncatlab, articles are wiki and can share space with the index, which is super great for zooming around for discovery. Hmmm, maybe thats an important feature of wikis and something to carry over?

Thanks for the pointers they are great to think about what makes them great

Andrew F 2021-12-15 15:33:35

What I've seen working in practice is explicit "top of the week", "top of the year", etc lists based on voting. I don't think you'll be able to usefully fit both new items and old good ones in the same "front page", but if you relax that requirement it gets easier.

Tom Larkworthy 2021-12-15 21:33:49

yeah thats probably the simplest way of generating long term insights and providing a reason to check occasionally. Long term is difficult because you need to normalize against usage at each point in time too, Doable though.

Jack Rusher 2021-12-16 08:09:03

We've talked a bit about how to turn the ephemeral stream of Slack (and others like it) into a more durable knowledge base on the #G016MGK6QE7 channel. Things have been pretty quiet lately, but maybe a good time to restart that convo?

Breck Yunits 🕰️ 2021-11-18 22:24:13

Does anyone know examples (or name of the pattern) of markup formats where instead of writing format directives inline <b>like this</b> you do it out-of-the-line like:

text writing format directives inline like this

 bold like this
Breck Yunits 2021-12-16 01:43:11

Thanks for the pointers everyone! I made an initial implementation. https://breckyunits.com/aftertext.html

Henning Sato von Rosen 2021-12-16 09:16:42

language-design-philosophy

A data structure that’s orthogonal at its core? Why is that so hard to think of? Why is there such a strong tradition in CS/PLD to think in composition by nesting but not of orthogonal composition? What if we (language designers, at least) are missing something here?

Why do I post such an underspecified topic? I think there is little doubt that perceiving orthogonally is a fundamental feature of human cognition, and that current language design fails to support this.

And, yes, I don’t even know how to argue for this. This may be frustrating to try to think of. I must admit; I’ve learned to appreciate the feeling that there does exist something, that it must exist, but I can only just almost try and grasp it.

What do you do in similar mental configurations? Grab a whiteboard? Begin writing an essay? Write some code that assumes the thing exists in order to reach your intuition for it (“air coding”)?

Your..

  • thoughts on this experience

  • ideas for an attack on this problem

.. are welcome! 🙂 ❤

Tom Larkworthy 2021-12-16 09:29:51

If by orthogonality you mean cross product kind of things, I think Concurrent Hierarchical State Machines / UML statecharts can represent orthogonality well with a closed form PARALLEL operator for two state machines.

But this is orthogonal in the sense the two things are independant, the state of the system is the cross product. In the simplest form they do not interact, though it does have mechanisms for communicating.

https://link.springer.com/content/pdf/10.1007/3-540-44929-9_24.pdf

Is this the right lines of thinking?

Henning Sato von Rosen 2021-12-16 09:35:23

@Tom Larkworthy You are reading my thoughts!

Tom Larkworthy 2021-12-16 09:41:20

cool, so the root of these machines is the ragular language thingys. So maybe a regex can be considered a representation with orthogonality at its core too (you can concatenate and | regex expressions). I like HSM formalisms though because they play well with formal verification and somewhat resemble normal programming if you squint really hard.

Henning Sato von Rosen 2021-12-16 10:06:35

@Tom Larkworthy Yes, I think HSM takes state machines in a great direction! I am pondering the following way to perceive orthogonality in HSM’s. Traditionally we would look at is as the typical concrete representation invites: { a: { b: { c: ... } }, d: ..., e: ...} . So I consider the idea that this is more concrete than it need be philosophically. Here is an attack: Let’s define two operators: & for combining values into and-states, and : for combining values into hierarchies. Then we write a:b:c & d & e . Traditionally, the CS practitioner and programmer would ask for precedence rules or brackets to disambiguate the expression:

{(a:b:c), d, e} or {a:(b:c) , d , e } . Here is the point where an alternative orthogonal model might be possible and might be valuable from a language-design point-of-view: In stead of nesting we lay out the values in a two-dimensional grid, e.g. drawing the & relation horizontally, and the : vertically upwards. Then, a noteworthy thing can be observed: The a value is now both an element in the and-state (horizontal relation) and the first element in the hierarchy (vertical relation). This is my criteria for detecting of orthogonality, as I meant it in the OP.

Wow thanks!, it was kind of cool to actually write it down.

Follow-up question: So, while this evidently is drawable; does it map well to cognition, implementation? Is it view-point in the eye of the beholder, or does it open up them HSM model for e.g. generalization/deeper understanding?

Tom Larkworthy 2021-12-16 10:18:33

My own experience is that HSMs are hard to program, but they are amenable to machine verification because their state space is enumerable. So thats useful, and in practice the paxos protocol is a runner for state machines, so they are used in technical domains for real (not sure about flavour of state machiens though, maybe not HSM).

I also see them in realtime systems (https://www.state-machine.com/) again, coz they are complex enough to be useful, but simple enough to really figure out and trace symbolically.

The QP frameworks people make a strong argument that HSM is necessary to avoid the state space explosion problem that basic state machines suffer from. This is directly because of the orthogonality. When you can express things as two orthogonal basis vectors you avoid having to flatten them into their non orthogonal space (the cross product). So yeah, I would say orthogonality has made state machine scale to the realtime systems domain. Of course, HSM are still less expressive than turing machines so they clearly are not used much when we have access to higher level languages and want to move fast and break things.

Tom Larkworthy 2021-12-16 10:20:12

This page expresses it much better and I think it is about orthogonality https://www.state-machine.com/fsm

Tom Larkworthy 2021-12-16 10:43:35

(yes I agree with your orthogonality picture, except that the H itself is an orthogonal, so we don't really need the concurrency bit for HSM to add orthogonality to FSMs). I think in this diagram the edges are dimension in your orthogonal space diagram

📷 image.png

Dalton Banks 2021-12-17 05:34:23

two, maybe three axes of orthogonality is nice for cognition. nesting is one way to manage more dimensions than that. seems to me you want to make it easy to navigate a variety of representations without losing context. https://www.quantamagazine.org/the-brain-maps-out-ideas-and-memories-like-spaces-20190114/

Henning Sato von Rosen 2021-12-17 08:46:53

So many interesting ideas! There may be many features that is prevalent in perception, but under-supported in the PL tradition for mundane reasons; e.g. Regular Expressions/ matching on pure text; I see at least two perceptual features that could be nice to support: Context/Refinement and Othogonality of Horizontal/Vertical directions (2D): Refinement of selections are described e.g. in Structural Regular Expressions by Rob Pike [ pdf ]. But I’m not aware of Regexp’s that do 2D matching. It’s pretty clear programmers make use of the vertical dimension e.g. by the tradition to align similar lines of code (pervasively done in Haskell and similar languages.)

Andrew F 2021-12-17 15:45:18

The a> value is now both an element in the and-state (horizontal relation) and the first element in the hierarchy (vertical relation).> This is my criteria for detecting of orthogonality...

Is this not satisfied any time the stuff nested under a is fully contained inside it?

I'm having trouble seeing this as anything other than a syntactic change. Nesting is still going to crop up in the semantics, or at least, it will cause a lot more trouble to get rid of it than you could possibly benefit from. Syntax should clearly express that.

I do think things that don't explicitly depend on each other should be allowed to be going independent. For instance, finding all the natural concurrency in a program. I don't know if this is exactly what you're saying, but I think it's related.

Somewhat aside: I've come to think of nesting and sequencing as being different sides of the same concept, namely dependency. I think this is supported by the way nesting-based encodings of sequences, like linked lists and fixed points, keep cropping up.

Breck Yunits 2021-12-17 21:35:27

Does anyone have recommended reading (books, papers, articles, Wikipedia pages) on the topic of "Types of thoughts"? Other ways to put it might be "Ontologies of Thought" or "Templates for Thought". Rhetorical devices would be a subset of the broader category I'm thinking about.

I'm looking to add to a grammar nodes for thought patterns like "Playing Devils Advocate" or "Thought Experiments" or "Listicles" or "FAQs".

Jimmy Miller 2021-12-17 22:16:45

Haven't read it. But what you describe sounds very much like Daniel Dennett's

Intuition Pumps And Other Tools for Thinking

https://www.amazon.com/gp/aw/d/0393082067/ref=tmm_hrd_swatch_0?ie=UTF8&qid=&sr=

Srini Kadamati 2021-12-18 15:19:15

World Beyond your Head by Matthew Crawford is an uncoventional choice, but its a nice “Field manual” for someone who used to be a knowledge worker and then pivoted into a craftsperson

Z Bing 2021-12-19 14:39:03

There's a very neglected type of thought called "nested agent modeling" or "recursive mind reading," which I think is in fact the real reason humans have large brains. Gentle graphical explanation here:

https://medium.com/@ThingMaker/common-knowledge-and-miasma-20d0076f9c8e

Z Bing 2021-12-19 14:53:53

A related paper here. Explains 7+ layers of nesting is actually possible to keep track of, but I can show 20 layers is not out of the question in some situations.

https://www.researchgate.net/publication/271539325_The_ease_and_extent_of_recursive_mindreading_across_implicit_and_explicit_tasks

Z Bing 2021-12-19 15:14:17

Another common but not often mentioned approach to thought is provisional reasoning about new paradigms, where you provisionally accept a claim as 100% true and then look at how well the known facts interlock in that scenario, seeing if it altogether ends up making more sense than the existing belief system /paradigm (rather than questioning each piece in turn with reference to the current paradigm, which heavily biases one in favor of it).

Z Bing 2021-12-19 15:22:45

An example would be imagining your stock portfolio has fallen greatly a month from now and seeing how much sense the currently known facts would make in light of that, if in that scenario you would say the writing was on the wall or not; then imagining it has risen greatly a month from now and doing the same; then imagining it has stayed roughly the same; then seeing which one altogether makes more sense.

Compare the plausibility of the two at the end, as unified wholes, rather than midway through. Very few seem able to avoid the error of switching scenarios midway through.

Kartik Agaram 2021-12-18 15:44:28

I just remembered this fun bit of scifi about an alien computational universe

http://akkartik.name/post/wangs-carpets

cc @Dalton Banks Srini Kadamati who've expressed interest in computation as simulation (https://futureofcoding.slack.com/archives/C5T9GPWFL/p1635811447034700; https://futureofcoding.slack.com/archives/CEXED56UR/p1639608107032600?thread_ts=1632872466.023400&cid=CEXED56UR)

[November 1st, 2021 5:04 PM] dalton: A thought that’s been crystallizing for me is that the essence of ‘coding’ is modeling &amp; simulation (not e.g. data and functions). These themes show up all the time in FoC contexts, but as far as I can tell they’re rarely the ROOT metaphors of a system.

Of course there are plenty of examples in “real engineering,” what Alan Kay refers to as CAD&lt;-&gt;SIM-&gt;FAB system. Do you know of examples of ‘convivial computing’ projects where modeling and simulation are the main event, or readings on the topic? What do you think of this premise?

Here’s a recent <https://www.quora.com/Does-Alan-Kay-see-any-new-ideas-in-computing|Quora answer> for more context: Does Alan Kay see any new ideas in computing? &gt; “New” is not what I look for. “Ideas that make a qualitative difference over past techniques” are what I’d like to see. &gt; &gt; Years ago, I’m fairly sure I was aware of pretty much everything regarding computing that was going on in the world. Today, I’m definitely not aware of everything, so it’s reasonably likely that if there was something really great being done somewhere that I wouldn’t know about it. &gt; &gt; I would be most interested in learning about “qualitatively more expressive” programming that is more in line with top-level engineering practices of the CAD&lt;-&gt;SIM-&gt;FAB systems found in serious engineering of large complex systems in the physical worlds of civil, electrical, automotive, aeronautical, biological, etc. engineering. &gt; &gt; In the CAD&lt;-&gt;SIM part I’d like to see the designs understandable at the level of visualizable semantic requirements and specifications that can be automatically simulated (on supercomputers if necessary) in real-time, and then safely optimized in various ways for many targets. &gt; &gt; Isolating semantics in the CAD&lt;-&gt;SIM part implies that what is represented here is a felicitous combination of “compact and understandable”. &gt; &gt; The FAB-part pragmatics are very interesting in their own right, and besides efficiencies, should be able to deal with enormous scaling and various kinds of latencies and errors, etc. &gt; &gt; The above would be the minimal visions and goals that I think systems designers within computing and software engineering should be aiming for. &gt; &gt; I’m not aware of something like this being worked on at present, but these days this could be just because I haven’t come across it.

[December 15th, 2021 2:41 PM] skadamat: The core unique idea to computing really feels like “simulation”. Personal Simulation? Even though the ‘quantified self’ movement didn’t really take off, there was a bit of a personal end-user empowerment angle which was neat. :thinking_face:

Chris Maughan 2021-12-19 17:06:53

You might enjoy ‘The Last Question’ by Asimov:

https://www.physics.princeton.edu/ph115/LQ.pdf

Kartik Agaram 2021-12-19 17:07:19

But of course 🙂

Andrew F 2021-12-20 02:00:11

I've read this before, not sure from your blog or somewhere else. Great story, made a mark. :)

I have a central concept of simulation in a different sense, like having a fine-grained hierarchy of (often very domain-specific) language interpreters, running programs in a hermetic sandbox, and other Turing-flavored simulation things. :D (It's an outrage that sandboxing software is so hard in practice when simulation is so foundational to computing.) I'm probably still missing some nuance on the model-centric perspective of simulation, but I bet they can be unified.