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

Emmanuel Oga 🕰️ 2020-12-06 14:00:13

thinking about better auto completion (a wizard style of auto completion instead of the typical list of options)

Emmanuel Oga 2020-12-07 00:49:55

Yeah wizards have a bad reputation, perhaps the good old auto complete mechanic could be retained, but with better options and info

Shalabh Chaturvedi 2020-12-07 00:53:50

Relevant to this discussion might be Smalltalk's find-by-example and Haskell's Hoogle (search by type).

Emmanuel Oga 2020-12-07 01:34:57

good point, I think 90% of the time the examples are the most useful part of the docs

Nick Smith 🕰️ 2020-12-06 06:46:37

Have people seen many programming languages where Sets are represented as functions from X → Bool and (more importantly) Lists are represented as functions from Int → X? And I mean they're truly just functions: all of the operations upon them are just operations upon functions, and thus they might be repurposed for other uses as well. Javascript and Lua kind of do this, except their philosophy is more like "all collections are just dictionaries", where a dictionary is a heavily-restricted class of function.

This approach ("all collections are just functions") seems like a versatile foundation (especially in the context of the semantics of the programming language I'm working on), so I've been digging into the ramifications of it lately. My biggest challenge so far is figuring out how to identify for which functions operations like set union and intersection are computable. Depending on how the function is constructed/defined, it seems like it could be quite hard to figure out a static "safety check". I want these operations to be well-defined even on recursively-defined functions, so it's not as simple as "ensure the function definition is just a finite list of cases" (i.e, a dictionary).

This doesn't seem unreasonable: Datalog works this way. Datalog predicates are recursively-defined functions from X → Bool (i.e. sets) that obey certain constraints so that queries upon them are answerable.

Andrew F 2020-12-07 05:57:39

set-size(my_set), where set-size is implemented by dynamic dispatch on its argument.

This also reminds me of the idea of records as (dependently typed) functions from a key type to whatever thing the struct was constructed with (or updated with? Hmm).

William Taysom 2020-12-07 07:37:58

I'm reminded of Barry Jay's Pattern Calculus. If on the one hand a hash table is a bunch of key, value pairs and, on the other, a standard lambda takes anything and uses it to come up with something else, you can imagine a pattern as living somewhere between: takes some things and uses them to come up with a value. Given two patterns you can glue them together. The standard way is that if the first one matches you take it, otherwise check the second one.

Not sure what he's been up to in the last while https://scholar.google.com/citations?hl=en&user=eWreFm4AAAAJ&view_op=list_works&sortby=pubdate.

Nick Smith 2020-12-07 08:11:36

@William Taysom I looked into Barry Jay’s stuff a while ago and remember not being impressed. Is there something that patterns are better than functions at expressing? One can already compose functions in many different ways.

William Taysom 2020-12-07 08:29:22

Well, not at all in an important sense, but kind of depending on your domain. Patterns here basically amount to partial functions. So if your domain happens to be all about partial functions (that's me sometimes where I end up using a lot of tables), then there's something to find here. But it's not going to be anything more than having a few functions for nicely composing a -> Maybe b, generally.

I guess a potential important difference can be whether you want to model order. For instance, Rubyist that I am, the keys in a Hash are ordered and I use this all the time. In another context, you may not want to keep that information around.

Another thought that I had while trying to remember the pattern calculus is why prefer a composition operator like this

<+> :: (a -> Maybe b) -> (a -> Maybe b) -> (a -> Maybe b)

(f <+> g) x = f x `orElse` g x

over something that collects all the results:

<*> :: (a -> [b]) -> (a -> [b]) -> (a -> [b])

(f <*> g) x = f x ++ g x

And so on.

William Taysom 2020-12-07 08:30:42

I think Jay's most interesting idea was in giving up referential transparency for a kind reflection. I like being able to look inside my methods. So that's neat.

Nick Smith 2020-12-07 08:33:42

@William Taysom Partial functions are my mortal enemy 😇. It’s a strict requirement that my programming language only permits total functions. The challenge is then making it expressive enough that you never feel you “need” a partial function somewhere!

Nick Smith 2020-12-07 08:35:21

Thanks for the details though. Sounds like pattern calculus is not what I want.

elvis chidera 2020-12-07 15:24:07

Working on a low-code project for native apps. The idea is predicated on the argument that many apps are just "skins around a database".

Why is declarative UI + declarative queries a bad idea? For example we create a todo app like this:

📷 image.png

elvis chidera 2020-12-07 15:25:44

The UI just renders what is in the database. Queries can make use of all the functionalities supported by SQLite.

elvis chidera 2020-12-07 15:28:15

Tasks listen to UI events, system events or database events.

In the example above, there is a task that listen to changes to the todos and automatically uploads to the server.

elvis chidera 2020-12-07 15:30:53

This seems to eliminate the need for boilerplate or unnecessary architecture components. I have built a production app with this and the speed of iteration was really cool.

I'm just curious if there are some fundamental issues with this that I'm missing.

Garth Goldwater 2020-12-07 17:09:37

this approach is similar to one of eve’s pro types, although they were closer to datalog than sql. you might find their experience report useful: https://youtu.be/WT2CMS0MxJ0

elvis chidera 2020-12-08 01:39:05

Thanks Garth. I will check the video out.

William Taysom 2020-12-08 03:42:36

Main challenge I think of is the scenario where an temporary edit state doesn't validate. As an abstraction, suppose you have two text fields which should contain non-negative integers that sum to 10. Honestly, I think the solution is to keep both keep both committed consistent values as well as temporary being edited values in the database. Then the UI has less to do with it, and it's more a question of when/how to commit changes.

taowen 2020-12-08 13:49:21

I have developed a similar dsl + framework like this. The main challenge is dealing with async. Network data fetch is inherently async, but user expect the UI to be sync. Binding async state to UI is a open challenge still being addressed by UI framework like React. While render-as-you-fetch (https://reactjs.org/docs/concurrent-mode-suspense.html) looks promising, but React did not ship with concurrent mode yet for many good reasons. Another challenge is efficient data caching & batching. With manual I/O, developer is manually tweaking the I/O operations. Binding async expression to UI, force the developer to rely on the framework to do the right thing. It is possible to auto-optimize in many cases, but it will require the developers to "let go" some control. It requires significant trust between you and the developers using your stuff to write software.

NTAuthority 2020-12-10 08:04:00

looks like flutter, I like it

elvis chidera 2020-12-12 19:36:25

Thanks @taowen. Did you open-source the framework you built?

We are working on doing these auto-optimizations. So far, we have seem some impressive results. But getting developer trust is indeed a salient issue.

elvis chidera 2020-12-12 19:43:52

@William Taysom valid point. That solution should work. Another solution (for the example you gave) will be to have a predicate on the insert trigger, so you can leave the temp state in the widgets themselves.

elvis chidera 2020-12-12 19:44:27

Thanks so much for the link 🙏 Garth Goldwater

Kartik Agaram 2020-12-10 14:43:53

Larry Tesler and NOMODES

During Larry's time in Xerox PARC there really wasn't such a thing as personal computers. At the time, software interfaces were designed around modes. In a text editor you couldn't just start typing and have words appear on the screen.. Larry pioneered the concept of software user studies, and found that many people would fail to get comfortable with the computer even after many weeks of use. And he believed that these modes were to blame, and they represented a threat to the dream of what personal computing could be.

So Larry made it his personal mission to eliminate modes from software. And he formed a principle. No person should ever be trapped in a mode. His slogan that he'd go around saying is, "don't mode me in." And his website is called: > http://nomodes.com> .

-- Bret Victor, 2012 (https://www.youtube.com/watch?v=PUv66718DII)

I've been thinking about this a lot for a few weeks as I take my first hesitant steps into UI design and find myself immediately creating modal dialogs. What are people's opinions on the priority of modelessness relative to the other considerations we often discuss here? For example, my UI tries to follow a couple of other principles Bret Victor likes. It minimizes interaction and always shows the complete state at a glance (http://worrydream.com/MagicInk), and it tries to reduce the need for the human to "play computer". Following Christopher Alexander, it tries to keep the display fairly stable and slow-changing. But. It has modal dialogs. 3 so far and counting. Once you bring one up, it's like a database transaction and you have to either commit or roll back.

My current thinking: it's ok if the time spent in a mode is short. A word seems short. It's not a huge hardship if you have to retype a word. Most of the time, words you type appear on screen. But I also notice that browsers used to bring up modal dialogs for say searching for a word on a page, and now they do so in a non-modal way where the panel pops up above or below the page while allowing you to interact with the page. I'm in text mode, so there's a fundamental limitation of only ever being able to interact where the cursor is. Perhaps that's the fundamental 'modefulness' here? I'm curious to hear what others think, and what stories people have about their experiences trying to avoid modes.

Kartik Agaram 2020-12-10 14:46:23

This thread was partly triggered by Emmanuel Oga's recent thread on autocompletion wizards (https://futureofcoding.slack.com/archives/C5T9GPWFL/p1607263213204500). Autocompletion is typically a mode, but so lightweight we don't think of it as such. Turning it into a wizard definitely makes it much more obviously modal. Just something to think about.

Emmanuel Oga 2020-12-10 16:47:25

the obvious huge counterpoint to "modes are bad" is vim, where everything is about modes. From the top of my head, it seems modes can be a great asset for the "advanced user" but could take a bit longer to get used to. Modes are so useful that even a lot of emacs users use them (evil mode). I have never related modal editing in vim to modal dialogs though, I guess there are points of contact but the experience seems pretty different.

Harry Brundage 2020-12-10 16:49:18

one way i have been thinking about it is "the least restrictive UIs provide the highest possible branching factor from current state to next action"

Harry Brundage 2020-12-10 16:50:33

vim's command mode lets you do an incredible number of things very quickly after entering it, so while modal, it isn't super restrictive in terms of the order you have to trigger it in, or the facilities it exposes once in it. if vim had 4000 modes, each for each little operation, it'd be different because the user would have to spend a lot more time trying to figure out which mode to use

Harry Brundage 2020-12-10 16:52:24

modal dialogs in UIs and especially wizards I think fall prey to that same issue, the user has to spend time figuring out how to trigger the right UI state to do the thing they actually want to do. "i know this button is somewhere but i have to figure out how to bring it up to press it" happens with modals sometimes

Harry Brundage 2020-12-10 16:54:35

i think autocompletes are an interesting pattern too because they aren't completely modal, they only change what some of the interactions you could take do, not all of them. you could keep typing characters along your merry way and dismiss the autocomplete. In that sense you never experienced the other mode, it's only if you press an arrow key or enter or escape that you have ... experienced ... the mode. I think with those keys in particular we're super accustomed to their behaviour changing in different contexts so the friction may not be as obvious or painful as the kind Larry hated

Harry Brundage 2020-12-10 16:54:56

so i agree with the idea that time-in-strange-modes being short is better, but maybe an added quality would be different modes should overlap as much as possible

Kartik Agaram 2020-12-10 17:04:57

Emmanuel Oga I actually had a few notes about Vim that I dropped on the editing floor 🙂 A few ways to work within a modal interface:

  • Make it obvious what mode is active.

  • Perfect undo/redo everywhere.

  • Add all the things to history. In Vim for example, you can start typing a command at the : prompt, change your mind, hit Esc and go back to other things, hit : and hit up-arrow -- and find the command you typed in but never ran.

You're right that modal dialogs aren't exactly the same thing as Vim's modes. I'd actually not connected the two until Bret Victor mentioned Vim above. It might have been some creative license, since Larry Tesler's work seems to mostly predate Bill Joy's creation of vi. So Harry Brundage's over-arching framework of "how restrictive is your UI?" seems useful.

Harry Brundage While you're right that I don't usually think of autocomplete as a mode, I have little skirmishes with autocomplete in various apps on a near-daily basis, where the app gets in my way and I have to backspace out of what it 'helpfully' completed. So it does seem useful to think of it as a modal interface, because the errors happen when I'm not conscious of what mode I've suddenly gotten put into. Particularly in combination with overly sensitive multi-touch or palms accidentally touching the trackpad, patterns that have sadly gotten all too common. To me, "never autocomplete" feels like a useful corollary to "don't mode me in" that also overlaps with Christopher Alexander's principles of giving UIs a sense of stability.

I was nodding along when you said, minimize restrictions. However, I think Vim has way too many modes: https://en.wikibooks.org/wiki/Learning_the_vi_Editor/Vim/Modes

Harry Brundage 2020-12-10 17:07:18

because the errors happen when I'm not conscious of what mode I've suddenly gotten put intoDoes that happen to you in traditional code editors? I totally know what you mean and I think you're right, if the implementation is actually interjecting content into the medium without you asking it to that's violating direct manipulation and surprising / uncomfortable. I haven't experienced that with code editors though, usually it shows a ghost or what have you until you confirm or select a different suggestion, which I like

However, I think Vim has way too many modesI agree, I never invested enough time in learning all of them or find a need for the strange ones often enough to stay practiced in using them effectively

Harry Brundage 2020-12-10 17:10:48

i am mostly just parroting principles from https://www.wiley.com/en-us/About+Face%3A+The+Essentials+of+Interaction+Design%2C+4th+Edition-p-9781118766576 too, they go into a lot of depth on modes and the difference between designing for beginners vs intermediates vs experts and what considerations apply when

Kartik Agaram 2020-12-10 17:11:09

Does that happen to you in traditional code editors? I totally know what you mean and I think you're right, if the implementation is actually interjecting content into the medium without you asking it to that's violating direct manipulation and surprising / uncomfortable.

Totally. I never experience this with Vim anymore, because while there are lots of modes the transitions are well-defined and the rules don't keep changing over time. So while I take seriously when people say it's hard to learn, yeah, it doesn't affect me.

Stable opt-in transitions does feel like a good principle to add to the list.

Emmanuel Oga 2020-12-10 17:22:40

Let them flounder about in their "normal mode." Normal isn't good enough for me! I want exceptional, IDEAL, I want… glorious mode, that's what I want.https://emacsconf.org/2020/talks/07/

Emmanuel Oga 2020-12-10 17:24:14

I honestly did not fully get the proposal but I think is related to your question. It seems to describe a way to "stack modes" such that modal editing can be more regular and require less time to learn.

Jack Rusher 2020-12-10 17:27:02

The best treatment of modes that I can recommend in book form is https://en.wikipedia.org/wiki/The_Humane_Interface. Tesler's "NOMODES" was one of those cases where one makes the mantra a target toward which to strive, even if it is beyond achieving completely.

Emmanuel Oga 2020-12-10 17:35:24

Raskin may have been biased by his choice of computers:

📷 image.png

Emmanuel Oga 2020-12-10 17:35:48

sorry, couldn't help it 😛

Andrew F 2020-12-10 20:20:16

From what I recall of The Humane Interface, "modes" are defined such that they only count when the user's main attention is on something other than the fact that program is in a "mode". Vim's modes count because the user is looking at and thinking about the text. I'm not sure "modal" dialogs count, since it's pretty hard to be confused about whether your actions will be interpreted by the dialog or not (which is not to say I fully endorse their use; IMO they tend to be clumsy).

Doug Moen 2020-12-11 00:51:35

Kartik Agaram> "You're right that modal dialogs aren't exactly the same thing as Vim's modes. I'd actually not connected the two until Bret Victor mentioned Vim above. It might have been some creative license, since Larry Tesler's work seems to mostly predate Bill Joy's creation of vi."Bill Joy didn't invent modal editors. Tesler didn't like the modes in the Bravo editor at Xerox, so he invented the Gypsy editor, which was modeless.

Shalabh Chaturvedi 2020-12-11 05:17:07

Modes in the broad sense are unavoidable so we have to figure out how to wrangle them. Even in non-modal text editors, if I open the File menu I'm now in a 'mini mode' where I can't just type what I want. If I open a command palette, that's another mini mode. Dialog boxes are no different.

Ted Nelson observed in one of his talks something to the effect of "applications are the ultimate mode" - talking about how each application is a mode in itself. The Photoshop mode on my computer works very different from the gmail mode, etc.

William Taysom 2020-12-11 05:22:45

The best demodifying I've seen is in the Civilization series of games. At the start of your turn, a bunch of things request your attention, "Okay, boss, what do I do now?"

Originally, it was one modal dialog after another. A decision might require looking at the state of the map — unavailable since the mode had hijacked the UI. Late in the game at dozens of modal windows would show up before you could check, so you might adopt the strategy of making a silly choice as a signifier that you need to come back to it.

In the latest Civ games (can't recall when exactly), instead of the modal hijack, you get a to-do list at the start of every turn. When you're good and ready you can pick an item, and if after looking you decide you weren't as good and ready as you thought, you can escape and look around more.

William Taysom 2020-12-11 05:25:23

Even when relatively small, modal forms can get in the way of you seeing what you need in order to fill the form. Consider find and replace. Sometimes you may think, "I want to do a find and replace action." You bring up the window/panel/tab, and it turn out the next thing you actually need to do is go hunt for the precise thing that you want to find.

Andrew F 2020-12-11 06:03:15

"Applications are the ultimate mode": very true, and aptly explains why Raskin didn't really like applications. :D

Konrad Hinsen 2020-12-11 07:36:15

The debate about modes has been going on for decades, but I have never managed to take sides. There are good and bad user interfaces (judging by experience) in both the modal and non-modal camps. Perhaps modes as such are not the fundamental criterion? Perhaps they are just the visible symptom of something else?

Harry Brundage 2020-12-11 14:55:22

Kartik Agaram i think the autocomplete example falls into Raskin's category of "quasimodes" (hat tip Mr Rusher) , which are modes that a user knows that they are for sure in

Raskin advocates either getting rid of [modes] entirely or using "> https://en.wikipedia.org/wiki/Mode_(user_interface)#Quasimodes> " (a term he invented in the book); a quasimode is a state in which the user must make some constant physical action in order to keep the computer in that state, so that they cannot forget that they are in that mode; an example is the keyboard's > https://en.wikipedia.org/wiki/Shift_key> .i think that the panel that pops up right below your cursor is a pretty darn obvious indicator that you've entered a different mode

Jack Rusher 2020-12-11 15:47:10

Harry Brundage Raskin was a bit more extreme than that. There were a pair of buttons on the https://en.wikipedia.org/wiki/Canon_Cat called "Leap keys" that one could hold down while typing to incrementally search (one for forward, one for backward!). The idea was that you would develop an internalized physical pattern -- muscle memory, basically -- for this action that would result in increased fluidity with the interface.

Harry Brundage 2020-12-11 16:16:29

that's awesome, i bet Raskin would have been a great organ player, sheesh

Harry Brundage 2020-12-11 16:17:43

(because of all the foot pedals)

Stefan Lesser 2020-12-11 16:25:17

I'm slightly confused about what "modes" means in modern GUIs. The story about Tesler I always thought was about global modes in applications at the time, more towards the vim kind.

To me it seems concepts like progressive disclosure and context sensitivity have replaced the need for global modes in complex modern GUIs, and the discussion of how these are somehow still related to modes seems somewhat moot to me, as I don't think they have much to with it…?

For instance, I'm having a hard time understanding how an auto-completion overlay menu is related to modes. Am I missing something?

Kartik Agaram 2020-12-11 16:26:16

Probably not. This thread is showing me that I was conflating there.

Harry Brundage 2020-12-11 16:30:17

there's still some pretty modal modern GUIs if you ask me, like the tools palettes in Photoshop or AutoCAD or what have you. You have the cropping tool/mode, the brush tool/mode, the redeye correction tool/mode etc

pawel ceranka 2020-12-13 14:32:49

there is a pretty sweet video about leap / cat on YT, if anyone is in quasi-modeless mood: https://www.youtube.com/watch?v=o_TlE_U_X3c

Daniel Garcia 2020-12-13 15:49:24

Kartik Agaram The Humane Interface book is available at http://archive.org.

I just read recently about the history of the autocomplete feature in the iPhone in http://creativeselection.io. Turns out that autocorrect helps with a hardware constraint: keys in the original iPhone touch keyboard were too small for typing without making errors.

Aria Minaei 🕰️ 2020-11-19 20:15:05

This is from Neil Postman's https://www.technodystopia.org/:

The printing press gave the Western world prose, but it made poetry into an exotic and elitist form of communication. It gave us inductive science, but it reduced religious sensibility to a form of fanciful superstition.What does he mean by "reduced religious sensibility to a form of fanciful superstition?" Was religion in a more enlightened form before print culture?

Andrew 2020-12-10 22:42:37

Was religion in a more enlightened form before print culture?

It’s complicated, but kind of, because religion is primarily about explaining the spiritual. Religion sometimes explains the material (though most frequently when the material is inexplicable), like the creation of the Earth, and stuff. It also occasionally focuses on the logical…

But religion is primarily there to explain that which is immaterial — the connection between this and that. The connection between your soul and your body, between a mother and a child, between our past self and our future self, between love and creation, etc.

Most of what religion tries to discuss can’t be easily reasoned about, or represented symbolically. It is mostly felt or experienced. Hence, religion can’t be put into print. Sure, stories can, traditions can, beliefs can. But the stories, traditions, and beliefs aren’t the religion. They’re merely pointers, trying to reference different aspects of the religion, which is not itself something that can be put into words.

As an increasing amount of our thought was offloaded from feelings to textual analysis, we started thinking like readers. And readers think in a different way from non-readers. Just like speakers think in a different way from non-speakers (see https://en.wikipedia.org/wiki/Monastic_silence)

Andrew 2020-12-10 22:44:47

In many ways, the argument is that the rise of print led to a subtle mind-virus: “If I can’t read about it, it doesn’t exist.”

But not everything can be read about.

Emmanuel Oga 2020-12-11 16:43:45

For all the love hypertext receives, I have a great gripe against it: learning through hypertext requires breadth first search over a sea of links.

Documents provide a single-hop link, and it is the reader's job to keep jumping through links until finding all the pieces needed.

DITA is a document format that encourages reuse of document snippets. I think reuse is good in moderation but as much as I'd love each document to be as self-contained as possible, repetition generates extra work for the reader of skipping known pieces (imagine a book where each chapter had 50% repeated paragraphs...). If repetition is involved, it would be nice to track which snippets I've already seen, and possible hide them.

In general, I'd rather authors provided a trail of links (so the extra hops along documents) to cut the search space. It would also be nice to have better "memory" of the places I visited. Currently browsers simply change the color of visited links, but I'd love to know which "trails" that link belonged to, how long ago I visited, etc.

In short, I'd like the experience of navigating hypertext to feel like I have a mentor next to me pointing me to relevant places, encouraging me to not worry about the sea of irrelevant information, etc.

Emmanuel Oga 2020-12-11 16:57:38

Ideally a document author would reify some DAG of topics to support any other one.

Emmanuel Oga 2020-12-11 16:58:17

(the smallest such set is https://en.wikipedia.org/wiki/NP-hard to find)

Emmanuel Oga 2020-12-11 16:58:31

when something is NP-hard to find, you know it is valuable 🙂

NTAuthority 2020-12-11 17:13:40

http://learnawesome.org I think they are building something you are looking for.

Though it is community driven and opensource, so not sure of the quality of links.

(one PR I did, that's my association with it)

NTAuthority 2020-12-11 17:16:10

Finding good resources is a even harder problem, most websites if left alone get filled with spam anyways.

Kartik Agaram 2020-12-11 17:25:49

I think you're blaming the wrong level of abstraction. Links are a mechanism, and writing linear prose is a mechanism. Teaching by non-interactive writing alone is hard no matter what mechanisms you use. Nothing will ever make it easy to bridge the gap between minds, transmit a complex model from one mind to another.

S.M Mukarram Nainar 2020-12-11 22:33:56

Nyxt (https://nyxt.atlas.engineer/) explicitly stores your browsing history as a tree. Hacking in some more metadata is probably pretty simple, and then some tooling on top for querying it

Garth Goldwater 2020-12-12 02:49:34

nyxt is a great find! thank you for sharing

Emmanuel Oga 2020-12-12 04:11:07

I think I get what you mean Kartik, that suboptimal knowledge transmission is not necessarily a problem of the medium (Hypertext).

My point specifically about hypertext though is that authors of specific materials could point readers to specific parts of a "trail" to help them cut to the chase.

An author could draw a map spanning more than a single "hop" to the next document.

Things like nyxt can help me keep track of my own steps, which is pretty cool.

There are some standards for more powerful links that never got traction(xpointer/xlink).

There's also https://web.hypothes.is/ (web annotation). This last one could work for what I'm talking about since annotations are based on RDF, arbitrary arrows can be drawn in any direction.

Kartik Agaram 2020-12-12 18:44:05

I've always found semantic-web mechanisms to be concerned with 0.001% use cases nobody will ever care about. But perhaps people in glass houses trying to make device drivers easy to understand shouldn't throw stones.

Emmanuel Oga 2020-12-12 22:00:04

oh snap

Emmanuel Oga 2020-12-12 22:00:06

😛

Emmanuel Oga 2020-12-12 22:01:48

I get all the hate semantic web stuff gets... it seems like nothing ever gets completed and polished before they move to the next moonshot. Current one is https://solidproject.org/.

Emmanuel Oga 2020-12-12 22:06:42

http://diveinto.html5doctor.com/past.html#postscript, although biased, was pretty for educating myself on the workings, successes and failures of the W3C.

Emmanuel Oga 2020-12-12 22:06:52

"The ones that win are the ones that ship."

Duncan Cragg 2020-12-13 18:36:38

Are there any non-techies here? I need to talk to you! 😄

Tim Lipp 2020-12-13 19:41:21

I feel like saying I am a non-techie in this space is like admitting to be a sheep in a den full of lions. Knowing that the lions here are pretty nice, I will bare my neck and admit I'm still very early in my tech-evolution. I'm more of a product manager than a coder.

What's up?

Duncan Cragg 2020-12-13 20:08:25

Hi Tim, no lions here! We're all nice now - especially since the Great Purge of Dissidents and Grumpies!

I was hoping to find some FoC-aware non techies to run my ideas past. You probably guessed it was more about you potentially helping me than the other way around! But on the plus side, you may like the ideas and it may change your life forever...

Konrad Hinsen 2020-12-13 20:13:02

Computational scientist here. Not sure if that makes me a techie. I see myself as a power user rather than as a developer.

Tim Lipp 2020-12-13 20:19:05

Yes please! I love being a thought guinea pig! I'm so relieved to hear about the great purge.

Duncan Cragg 2020-12-13 20:25:49

Konrad: hmmm.. you sound slightly techie! 😄

Tim: yeah, it was bloody, but the right thing to do!

Kartik Agaram 2020-12-13 19:18:47

I'm at an impasse with my project of a live-updating postfix programming environment (https://futureofcoding.slack.com/archives/C0120A3L30R/p1607329853147000) and would appreciate some UX ideas/feedback:

  • It's not clear how to scale this UI along several dimensions. What should happen when a line gets too long for the screen? What should happen as values on the stack get wide? Or deep? My screen objects (https://futureofcoding.slack.com/archives/C0120A3L30R/p1605244930088000) explored multi-line values on the stack, but it feels wasteful to repeatedly show screens, especially as the screen sizes grow larger and more realistic/useful.
  • Many attempts to add capabilities hit the scaling limits even faster. If I try to reimplement shell utilities like grep I need to support files with at least 50-character lines. Requesting URLs on the internet also requires showing long URL strings on the stack.
  • One thing I keep rubbing up against is the distinction between editing a program and browsing its state. Bret Victor's demos like https://vimeo.com/36579366 consistently gloss over this. Yes, it's nice to be able to play what-if experiments with your program, but you quickly realize you need to unwind one experiment to try out another. Either you need smart undo, with the ability to somehow drop milestones into the timeline after the fact. Or you need to somehow separate browsing operations from manipulations of the program itself. It feels more feasible to show many copies of a screen object if most of them stay collapsed. Or to truncate URLs if they can be expanded on demand.

I do have one more idea for an interesting demo: supporting APL-like array operations. But I'm not sure if I should go down that road if there are potentially fatal problems with this whole approach.

A Mu-specific constraint here is the lack of a mouse. My UI has a single point on the screen where I can manipulate things. There's no mouse, because mouse support in text-mode terminals is non-standard and requires understanding differences between terminals. Which requires dependencies beyond a Linux kernel. That's something I've managed to sidestep so far by staying extremely lowest-common-denominator in terminal capabilities.

Perhaps I'll switch gears and focus on getting off the Linux kernel. Then I won't need to worry about terminal compatibilities. But then people would be required to use Qemu to play with Mu. Which sucks 😕 Perhaps that's the fundamental psychological block here: I want to keep Mu easy to try out, but beyond a point I can't undo bad historical decisions without adding some friction to checking it out. Then again, it's not like many people try it out anyway, and requiring Linux is just as much friction for someone on a Mac. Yeah, perhaps there's more OS hacking in my future. Thoughts/suggestions appreciated on this angle as well.

Daniel Garcia 2020-12-13 19:39:15

I would love to help sketching some designs. Where I normally start is having examples for longer/more complex functions and from there sketch different UX design options

Chris Knott 2020-12-13 20:35:14

What to do about line getting too long?Just infiniscroll to the right within in a window/frame (perhaps I'm misunderstanding the issue, this seems completely analogous to new lines in a source file).

What about awkward values on the stackI think you'll have to just put a marker on the timeline stacks (like [$1]), then on the left of the screen show [$1]["http://example.com/blah/122512"] with the same colouring. The values are const (IIUC), so you can show a single list of values across all stacks in the timeline view

Chris Knott 2020-12-13 20:39:01

Your point about BV skimming over the crux of live editing is a whole other thing...

Garth Goldwater 2020-12-13 20:46:02

i’m also free to sketch whenever! my initial suspicion on the stack depth stuff is that the stack shouldn’t ever really get too deep—some examples would help here. i tend to err on the side of “worry about it when it’s a problem because then you’ll have enough information to make the tradeoff”

truncation is tricky and my temptation would be to truncate with a reasonable default but make the default accessible. visual stuff like this also benefits from examples. if i were to put my rebol hat on my suspicion would be that long data is often secretly structured in one of two ways: you’re using data to represent a lot of small differences, like with hash ids, and all you need is displaying something like a scannable difference, or it’s deeply structured and made linearized (like urls) and you actually want a struct and to display relevant differences based on some context (in a web app you might care if something belongs to a person or a team, or you might just be interested in document ids)

if you’re just worried about unix compatibility, it might be helpful to investigate the goals: do you want to keep the ui the same? or do you want to have code for unix work on your platform? or do you just want equivalent functionality?

Duncan Cragg 2020-12-13 19:35:04

Oi! Kartik, you've scrolled me right above the fold! 😄

Are there any non-techies here? I need to talk to you! > 😄

Kartik Agaram 2020-12-13 19:51:06

Oh sorry!

Duncan Cragg 2020-12-13 20:04:25

😄