See the entire conversation

Thinking a lot about this lately. (Added to patrickcollison.com/questions.)
86 replies and sub-replies as of Oct 01 2018

Seems like there are some examples of this that exist - excel, sheets, esp. @airtable @glitch @scratch
Good point. The pendulum swings. Apps are coming up that give open-ended data manipulatation but have a network interface. Will add @coda_hq to your list
Coda seems cool! There’s a case for optimism here - minecraft, IFTTT, and a big chunk of the IOT market (raspberry pi, magic leap, philips hue), lots of vr / ar stuff too. For a while, you almost had to program an oculus if you got one.
so much of our work is directly influenced by this concept
It seems to me that the robustness of the key building blocks hasn’t kept up with the growth of their application. This creates a situation where it’s more dangerous and difficult for end users to do productive things than it used to be. One possible reason for the lockdown.
I’ve been having fun with Shortcuts on iOS 12. It’s lightweight but definitely gives some control back.
100 times this. It makes the modern computing platform easily programmable in a way we’ve not seen in recent memory.
I made several shortcuts the first night I updated. It’s definitely filling a void.
What happens when you get to an answer that is satisfactory?
Any progress on this question? This was the first time I've heard of mastery learning and it makes a lot more sense to me than the way we do it now.
Monorail and not bicycle. Well said
Although not super-relevant to the larger point, I've been surprised by a few vibrant userscript communities which customize web apps. It gives some of the feeling of VBA or Emacs back in a web app context. (Userscript as in GreaseMonkey.)
Where does something like @LookerData fall on this in your opinion?
(1/2 )Its an interesting engineering and Ux/Cx problem to solve. May I bring you attention to #TwilioFlex @twilio Cc:@calozpom @jeffiel
If you can completely separate data from user front end, there is no reason the app can’t be fully customizable, so long as it’s powered by some version of data. There could emerge an intermediary adjusting this data to enable more user specific flexibility on the app side.
The shortest distance between two nodes in a graph rarely goes through its leaves
Users have come to expect the defaults and don’t want settings or complications. They want things to just work out of the box. Which limits creativity in considering solutions for problems they have.
The way I see it, Enterprise customers want infinite configurability but not customisation that they have to maintain through upgrades. It’s the big challenge that a service supplier like e.g. ServiceNow has.
may be the solution for SaaS products
The root cause is the platform: web/mobile don't have primitives for "scriptability" Unix's | is composable and the Unix philosophy emphasizes expressivity. We need a _platform_ with the philosophy and the primitives
Unix was designed with the limitations of the 70s' hardware in mind. Better hardware in the 80s made possible much more advanced designs like Smalltalk and Genera. So Unix is a good example, but only in the context of the 70s.
Maybe you will get a kick out of X-Ray, my prototype of a direct-manipulation environment for UNIX-like improvisation, vimeo.com/181856703 . IMO, "lenses" are the proper shape and size of software. Apps are too big, dragging down both the software market & productivity.
X-Ray: Sort, Tee, Calculate Lenses
A demo of X-Ray, a computing environment that marries UNIX philosophy with direct manipulation. In the video, I introduce the idea of lenses, simple tools that provide…
vimeo.com
We're diverging from holy grail of user-defined, drag and drop application design, mostly because of protectionism from platform owners. Where anything like user-defined development happens, it has to be done within the close confines of artificial restraints.
Constraints* , is what I actually wrote. 😂
What if the malleability of the end-user experience could range from end-user-initiated but also include developer-initiated mutations as well, an experience custom to each end-user. Where the application is designed with sandboxes within the application build.
I’m writing something on the intersection of this with Information security products. It is the 3rd and final part of a trilogy. 2nd post is here:
Avoiding The Infosec Extinction Part 2.
blog.eutopian.io
What’s the consumer version of an API driven solution? — Drag and drop widgets — Connect blocks to build data pipeline — press to train on data (algo discovery) and automate
In the last few years my day to day computing has shifted from all native apps to having to do nearly everything through a browser. Less control over workflow and data, and computing is a lot less FUN now too. Everything feels like a chore. A hassle behind every browser tab.
What do you think about Shortcuts on iOS in regards to this? People are doing some crazy stuff with them: “Hey Siri, turn on Apple TV” twitter.com/viticci/status… Insert screenshots into templates: twitter.com/viticci/status… Multilingual iMessage dictation: twitter.com/viticci/status…
My latest Shortcuts experiment: Send iMessages in MULTIPLE languages from a widget – with a single Dictate Text action. It's based on a little-known feature of dictation in Shortcuts. macstories.net/ios/how-to-dic… (Includes a video of English and Italian dictation, of course.)
Sounds good. We needed stuff like this at Centrica when we rolled out SAP. I'd like to see more.
Problen with malleability is thst it gets abused. Fondly recalling excel macro viruses.
Also that capability exists in today's tools. Visual Studio Code is an excellent example. Almost all Linux works like that. Chrome and Firefox as well.
It's a great question. I can't help but thinking it's related to the question two points back. I love a good domain specific piece of software when I'm learning, but when I'm somewhere competent and looking to press agead, customization really facilitates.
Other related question ... At what point does a software user experience become unacceptably slow?
We were also discussing this yesterday in context of POS systems. Seems like a POS with an open API and a scripting language could be the way to properly solve that problem. Very interested in Stripe terminal.
In general, as they get more sophisticated, how feasible is it to allow end users to tweak? Take tech in agriculture, farmers used to repair and tweak tractors when it was mostly mechanic. Now there’s too much electronics.
The 'Right to Repair' Movement Is Being Led by Farmers
Farmers are pushing back against legislation that prevents them from fixing their own equipment. If successful, it will be a huge victory for consumers.
motherboard.vice.com
Not sure if that is the best example, as these farmers actually do have the tools and knowledge to do their own maintenance. They are stopped from doing so by suppliers & manufacturers shortening LCM.
Yeah, I know, which is the point of the article. But I think it’s niche right? My point is that when it was mechanic, anyone could tweak and fix on their shop. Now, only a few tech savvy ones will try. The parallel holds with apps and other tools IMHO
You should give up on malleability. It’s the end of early apps, and that means the security and robustness (non-crashiness) are king now, and for good reason. Swiss Army knives are terrible for big work. You need a very dependable machete to get through the jungle.
Ironically, a lot of big work (as I interpret the term) is done in the malleable Excel while most small work is done via rigid apps.
Excel is a dumping ground. It’s just smart graph paper.
Excel is the most popular end-user programming language.
Reminds me of this part from the Sorkin Jobs movie....
Stripe UI: what part of it would you want to make programmable?
After spending years working on this, I think the answer is that they could be, but someone has to care and it probably won’t look like what we expect. What most people want to do looks less like programmatic recipes and more like asking questions.
As programmers we tend to focus on the idea of adding functionality, but in our user research we found relatively few people wanted that. They were just trying to get an answer of some kind and then consistently communicate that answer to themselves or someone else.
Yeah. I think at least some significant part of future programming will look like semantic search over existing codebase (bring up webserver) to find code blocks. githubengineering.com/towards-natura… Then time traveling debugging
Towards Natural Language Semantic Code Search
The Blog of the GitHub Engineering Team
githubengineering.com
If you're still working on this, focus on the questions part. The intuitive way for humans to communicate without ambiguity is to assume the receiver can disambiguate and will request clarifying questions when uncertain.
End user computing will improve creativity and would bring forth more and more innovation as users get a chance to express. Without it, we'll ultimately devolve into carefully bred sheep
With less distance, would you find many people and communities working on these problems with all kinds of wisdom to share? Methods of engineering like abstraction, encapsulation, and isolation can also be powerful tools for preventing learning :)
I think data manipulation that is parameterized or learned for each user comes very close. Google does a good job of allowing you to manipulating your data for a specific domain - web and some others. A similar open ended correctable exploration tool is a possible answer.
Also how did I not know about your questions page ? Many intriguing questions there. 🙏🏽
This is a trade-off embraced by the majority of end-users and therefore app devs...ease of use over control and flexibility. Accelerated by bottoms-up GTM models
Our experience with Bubble is that there are a ton of people out there that want more control, as long as it comes with an interface similar to Office in terms of complexity. And what we hear from them is that they missed these tools, the last ones were Access and FileMakerPro.
This puts it well in terms of Ashby's Law of requisite variety
Less power is better. If all users are up to speed with programming and the API/SDK/platform and know what they are doing - that would be fine, but the more flexibility we give - the more difficult it becomes to to maintain and test the core soft lib.
Meanwhile, in education, computers are not used as a bicycle, but as an exercise cycle. This is the most pressing UX problem of our time.
"Why can't I copy a URL to my editor to enable real-time collaboration with someone else?" <- That's basically what we're trying to accomplish with our next iteration of Scrimba:
Scrimba Live - alpha version
Download the npm package here: https://www.npmjs.com/package/scrimba Leave your email here if you want updates: http://eepurl.com/dBADxz Also, join our Slack...
youtube.com
Also why note taking software cannot (yet) scale better than human minds
And all of it on a mobile device. No PC or web browser required. 😊
We may have found an approach for creating the technical and economic incentives for software being developed more open and adaptable again. You can read about it here: worldbrain.io/crowdfunding-m….
Memex | Crowdfunding the Future of Knowledge
Get the first knowledge management tool perfectly adapted to your needs.
worldbrain.io
There is also the related goal of programming literacy. It’s as powerful of a transition as being able to read/write. And maybe if a large fraction of users were good at programming, we’d see more programmable interfaces.
what constitutes as programing literacy? in your opinion
Sounds a little like a chicken and egg problem, as the availability of programmable programs will also be a great incentive for programming literacy.
Me too.
- computing for everyone: we had the PC, scripting, spreadsheets, then... it stopped. Smartphone is arguably a step backwards. Excited for the future of end-user computing. - personalized medicine. @goforward already feels like the future. Related: CBT assistants or apps.
I wrote an essay/talk trying to answer, what I think, is a closely-related question: why are the development environments most programmers use remain so primitive?
Disintegrated Development Environments — How Did We Get Here?
Development environment fragmentation and the story of Worse is Better vs the Right Thing approach to software engineering
amasad.me
I'd add @zapier to this.. in a way connecting apps via API's is a way of extending their functionality
PC, if you get serious about this, count me in. My design provides user "computing without programming" in the name of a larger prize, people interoperability. Of course a new paradigm requires a new environment, code-named Everything - eliminating COTS sw from dev toolbox.
Did people build lots of macros in the past because people always need more control? Or because tools were lacking and less specialized? I vote for the latter
As someone who uses Emacs a lot in private, but not so programmable tools at work: maybe programmability can lead to downsides in professional cooperation? "Can you come over and help me with that?" can get difficult when the tools are highly customized.
We’ve been thinking a lot about this. It is why we built @goextend, to put power in the user’s hands but do it in a way that won’t compromise the application or other users. Serverless paradigms have opened up new ways to tackle this.
It would be cool to experiment with this with programmer directed software. That said, Eclipse IDE already is programmable with plugins in Java. Atom allows customization with CSS. Emacs allows customization with Lisp. This vision fits a certain target audience: programmers!
A good example for you to consider is integrated circuit design software. It's enterprise, users are extremely technical, and end-user tailoring is absolutely necessary.
To extend the metaphor, this is happening because most users do not know how to ride a bike. I'm not sure that will ever change