Live data from Hacker News

What is a stateless user interface?

blog.ezyang.com

11–20 of 30 posts

Re: What is a stateless user interface?

#11

The enemy is ambiguity. To avoid ambiguity, you need to be explicit. Being explicit is expensive. Thought prediction (auto-completion) is the solution. We need a computer-assisted predicate-oriented language. This will become the only UI we need.

I have been wanting to build this for years. We should chat!

Re: What is a stateless user interface?

#12
post #7

Earlier quoted context omitted.

Image editing is one of those great examples of the workflows being so diverse that no generalized interface solution will be very good for all of them. What's tickling my brain at the moment is the idea that these complex apps might be better as languages first, just shipping with thousands of well-organized example scripts that cover all the bread and butter - in the same way that synthesizers moved towards being p…

There are ways forward. For instance, instead of a small number of tools which mutate their state, why not let the user clone variants of the tools which are configured differently. Let me configure two or more copies of the move tool, one configured for layers and one for selections. Let me give them different icons and let me position it in a custom toolbox. Don't make me do the equivalent of swapping bits on a mul…

Not the point. Obviously we can think about ways to avoid each specific problem that each user might have. But developer resources are limited and you can't chase all user's problems.

If you want this worked on, you should contribute to the project. Not saying you need to learn how to actually code on Gimp, but just to add your voice to the mix.

Re: What is a stateless user interface?

#13

The enemy is ambiguity. To avoid ambiguity, you need to be explicit. Being explicit is expensive. Thought prediction (auto-completion) is the solution. We need a computer-assisted predicate-oriented language. This will become the only UI we need.

How is this better than hooking into bash-completion? I don't see this avoiding ambiguity.

Re: What is a stateless user interface?

#14
I think cabal is the primary reason why I do far less Haskell coding than I'd like. Coming back to projects to find that they've suffered from severe 'code rot', even when sandboxing. Then finding it basically impossible to recover from because some library version somewhere isn't happy, but the only thing that's reported are cryptic error messages. I've previously had to rebuild my dev environment from scratch on both OSX and Windows because of unrecoverable issues. It is frustrating in the extreme.

I'm not a hugely experienced Haskeller, so I've almost certainly made 'classic mistakes', but as a system it is so unstable that I couldn't really commit to any large projects, which is a shame, because I really, really rate Haskell as a language.

In stepped F#, and although not as nice a language Haskell, the tooling works. It would be great to see this resolved once and for all.

Re: What is a stateless user interface?

#15
post #14

I think cabal is the primary reason why I do far less Haskell coding than I'd like. Coming back to projects to find that they've suffered from severe 'code rot', even when sandboxing. Then finding it basically impossible to recover from because some library version somewhere isn't happy, but the only thing that's reported are cryptic error messages. I've previously had to rebuild my dev environment from scratch on bo…

Luckily, Stack [1] allays a lot of the reproducible build hell that Cabal sometimes provides. I would highly recommend trying Stack out before deciding that the Haskell package management system is a dealbreaker for you. More and more open source projects are using it - and if they aren't, perhaps that could make a good first contribution to a larger project (if you're having build trouble with vanilla Cabal, others probably are as well).

[1]: https://github.com/commercialhaskell/stack

Re: What is a stateless user interface?

#16
Maybe less unnecessary or confusing state could be a good thing, but taking state out of interfaces altogether sounds like throwing the baby out with the bathwater. The whole point of interfaces is interacting with and modifying the state of the computer based on what the current state of the computer is, after all.

Re: What is a stateless user interface?

#17

Maybe less unnecessary or confusing state could be a good thing, but taking state out of interfaces altogether sounds like throwing the baby out with the bathwater. The whole point of interfaces is interacting with and modifying the state of the computer based on what the current state of the computer is, after all.

Nah. Some interfaces are purely functional.

Re: What is a stateless user interface?

#18

The enemy is ambiguity. To avoid ambiguity, you need to be explicit. Being explicit is expensive. Thought prediction (auto-completion) is the solution. We need a computer-assisted predicate-oriented language. This will become the only UI we need.

>>The enemy is ambiguity. To avoid ambiguity, you need to be explicit. Being explicit is expensive.

Beautifully succinct and widely applicable. It is a gem, thank you.

Re: What is a stateless user interface?

#19
post #7

Earlier quoted context omitted.

Image editing is one of those great examples of the workflows being so diverse that no generalized interface solution will be very good for all of them. What's tickling my brain at the moment is the idea that these complex apps might be better as languages first, just shipping with thousands of well-organized example scripts that cover all the bread and butter - in the same way that synthesizers moved towards being p…

There are ways forward. For instance, instead of a small number of tools which mutate their state, why not let the user clone variants of the tools which are configured differently. Let me configure two or more copies of the move tool, one configured for layers and one for selections. Let me give them different icons and let me position it in a custom toolbox. Don't make me do the equivalent of swapping bits on a mul…

The gimp already has this feature. It's called presets and it works well enough. Just set up your tool exactly the way you want it and then save a preset. You can even configure the preset so some settings (such as colour) pass through the preset.

Re: What is a stateless user interface?

#20
post #14

I think cabal is the primary reason why I do far less Haskell coding than I'd like. Coming back to projects to find that they've suffered from severe 'code rot', even when sandboxing. Then finding it basically impossible to recover from because some library version somewhere isn't happy, but the only thing that's reported are cryptic error messages. I've previously had to rebuild my dev environment from scratch on bo…

You might want to look into Nix for Haskell development. Nix a pure, lazy, functional DSL for describing packages and dependencies, and thus naturally attractive to Haskellers. As a result, there's good support for Haskell in the nixpkgs package collection, and helpful folks on the mailing list if you run into trouble. Stateless, deterministic builds are what nix is all about!
Post reply on HN