Live data from Hacker News

Malleable software: Restoring user agency in a world of locked-down apps

inkandswitch.com

71–80 of 117 posts

Re: Malleable software: Restoring user agency in a world of locked-down apps

#71

I was thinking a lot about software malleability - but from a technical perspective. I am on the verge of building something useful - only if I could find the time to do it. Here's my premise - if you use something like a game engine, say Unity, and Unreal, you basically have the ability to modify everything in real time, and heve it reflected inside the editor immediately - you could change textures, models, audio,…

Things like this exist. They're not that useful in practice, because it's like live editing PHP directly on the server, only more so. Most of the value of edits to a piece of code doesn't come from running it once, it comes from having that edit in a durable, managed place. And however much effort you put into your code management database, it's hard to beat the amount of tooling that exists for the worse-is-better "mostly-ascii files on a unix filesystem" model.

Re: Malleable software: Restoring user agency in a world of locked-down apps

#72
post #47

Not directly related but I'm sad when I fire up my old Windows phone that I bought for nostalgia and it doesn't work, other than the base OS maybe the old bing. I get it too, world moved on, people have to manage APIs, updates... but yeah.

There must be a law forcing them to open all specs, such that enthusiasts would be able to use the device. It should be criminal to force the planned obsolescence and create e-waste like this.

Agreed. stopkillinggames.com is trying to put a stop to this by ask devs to build in a end-of-life plan for games that are retired.

Re: Malleable software: Restoring user agency in a world of locked-down apps

#73
I've reverse-engineered a couple of programs before in order to get them to do what I want. Things like setting default options in a program that doesn't let you change the defaults, or getting older Windows programs to function correctly.

I've also patched open-source programs locally in order to get them to do what I want but wouldn't be suitable for upstreaming. For example, I've reverted the order of buttons in a "do you want to save?" close dialog when they changed in an update.

Minor stuff, but just being able to do this is amazing. The trouble is, developers - at least those of closed-source programs - don't want you to be able to do that, partially due to a lot of them relying on security by obscurity in order to earn money.

As such, it feels like the only way you're going to get developers to be on board with something like this is to be able to have them specify what people can change and what people can't change - and that's something that developers already do (whether they realise it or not) with things like INI files and the Registry.

This is why people using UNIX-based systems campaign for small programs that do one thing and do it well. Being able to combine these small programs into a pipeline that does exactly what you want? Now that's amazing.

Re: Malleable software: Restoring user agency in a world of locked-down apps

#74

I appreciate the idea behind the post, because certainly, we need more hackable apps now that everything is becoming a SaaS that effectively cannot be archived or hacked on (unlike, say, WinAmp or major releases of Windows and their respective fan updates, or for a more common example game mods). Unfortunately I think that while there’s a decent number of power users and people who have the aptitude to become power u…

Yeah, I'm gonna have to disagree with that. Computer users are shaped by the tools that they have available to them. There is always going to be a varying of degrees on how much a user gets in customization, but when the environment is designed around customization, users end up using the tools that are given to them.

I’m not disagreeing with you, but rather suggesting that the ceiling for how much the average user can/will leverage customization is surprisingly low.

If we’re looking for levers to pull to help more people become advanced computer users, I believe progressive disclosure combined with design that takes advantage of natural human inclinations (association, spatial memory, etc) are much more powerful. Some of the most effective power users I’ve come across weren’t “tech people” but instead those who’d used iMac for 5-10 years doing photography or audio editing or whatever and had picked up all of the little productivity boosters scattered around the system ready for the user to discover at just the right time.

With that in mind, I think the biggest contributor to reduced computer literacy is actually the direction software design has taken in the past 10-15 years, where proper UI designers have been replaced with anybody who can cobble a mockup together in photoshop, resulting in vast amount of research being thrown out in favor of dribbble trends and vibes. The result is UI that isn’t humanist, doesn’t care to help the user grow, and is made only with looking pretty in slideshows and marketing copy in mind.

Re: Malleable software: Restoring user agency in a world of locked-down apps

#75
post #3

I love the optimism, but I'm a pessimist. Even at the first paragraph: > "The original promise of personal computing was a new kind of clay—a malleable material that users could reshape at will. Instead, we got appliances: built far away, sealed, unchangeable. When your tools don’t work the way you need them to, you submit feedback and hope for the best. You’re forced to adapt your workflow to fit your software, when…

Coauthor here. You make a fair point! Ease of use matters. We all want premade experiences some of the time. The problem is that even in those (perhaps rare!) cases where we want to tweak something, even a tiny thing, we’re out of luck. An analogy: we all want to order a pizza sometime. But at the same time, a world with only food courts and no kitchens wouldn’t be ideal. That’s how software feels today—-the “kitchen…

> Coauthor here.

> That’s how software feels today—-the “kitchen” is missing.

I believe you'll want to read this essay which appeared in the Spring 1990 issue of Market Process, a publication of the Center for the Study of Market Processes at George Mason University ...

"An Inquiry into the Nature and Causes of the Wealth of Kitchens" by Phil Salin

Having worked for him, I'd say his wikipedia entry doesn't do him justice, but is a good start if you're curious--like your Ink & Switch group he spent many years trying to create a world changing software/platform [AMIX , sister co. to Xanadu, both funded in the 1990s by Autodesk].

http://www.philsalin.com/kitchens/index.html#:~:text=An%20In...

Re: Malleable software: Restoring user agency in a world of locked-down apps

#76

A tool which looks at this sort of thing which was mentioned here recently: https://news.ycombinator.com/item?id=44118159 but which didn't seem to get much traction is: https://pontus.granstrom.me/scrappy/ but it pretty much only works for JavaScript programmers and their friends (or folks interested in learning JavaScript). Other tools which I'd like to put forward as meriting discussion in this context include: - L…

Neat —- Scrappy looks like a lovely prototype! As the creators say in their writeup, it fits nicely into the lineage of HyperCard-style “media with optional scripting” editors, which provide a gentle slope into programming.

In the section on dynamic documents towards the end of our essay, we show several of our lab’s own takes on this category of tool, including an example of integrating AI as an optional layer over a live programmable document.

Re: Malleable software: Restoring user agency in a world of locked-down apps

#77
post #76

A tool which looks at this sort of thing which was mentioned here recently: https://news.ycombinator.com/item?id=44118159 but which didn't seem to get much traction is: https://pontus.granstrom.me/scrappy/ but it pretty much only works for JavaScript programmers and their friends (or folks interested in learning JavaScript). Other tools which I'd like to put forward as meriting discussion in this context include: - L…

Neat —- Scrappy looks like a lovely prototype! As the creators say in their writeup, it fits nicely into the lineage of HyperCard-style “media with optional scripting” editors, which provide a gentle slope into programming. In the section on dynamic documents towards the end of our essay, we show several of our lab’s own takes on this category of tool, including an example of integrating AI as an optional layer over…

Yeah, I just wish it had a Bézier curve object....

I need an interactive tool for programming such (or I need to buckle down and implement the METAFONT algorithm in my current project).

Re: Malleable software: Restoring user agency in a world of locked-down apps

#78
post #73

I've reverse-engineered a couple of programs before in order to get them to do what I want. Things like setting default options in a program that doesn't let you change the defaults, or getting older Windows programs to function correctly. I've also patched open-source programs locally in order to get them to do what I want but wouldn't be suitable for upstreaming. For example, I've reverted the order of buttons in a…

I have also patched open-source programs locally in order to get them to do what I want, although sometimes the program is very large and takes a long time to compile, while other times the program is much smaller and can compile more quickly. I had also sometimes modified binaries, or had entirely rewritten a program to get it to do what I wanted. Sometimes, I was able to do it by editing configuration files manually rather than using the UI, or by changing the permissions of files.

Re: Malleable software: Restoring user agency in a world of locked-down apps

#79
post #48

Earlier quoted context omitted.

I mean, Tcl/Tk has had this since the 90s. Rewrite your procs (functions) on the fly, delete GUI items on the fly, generate new events, create listeners on the fly, etc, etc. Quite easy to create a GUI that's interactive AND a console you can script on at the same time to inspect / edit / change code. For example, don't like your window attributes? Write code to destroy it, and re-create it and keep your "live" data…

Never claimed to be innovative, but sadly all these cool features are nowhere to be found in modern languages. And for some reason, they never appeared in a fast(ish) language, even though I'm sure the JVM is very well equipped to handle this kind of dynamism.

Recompiling a method[1], popping the stack frame, and re-entering the new method is a very, very common debugging pattern on the JVM. I miss it every day that I'm on vastly dumber platforms

https://www.jetbrains.com/help/idea/altering-the-program-s-e... -> https://www.jetbrains.com/help/idea/pro-tips.html#drop-frame

1: pedantically, you're recompiling the whole class, but usually it's only one method changing at a time unless things are really going bananas

DCEVM (RIP) allowed swapping the method signature, too, but that is a lot more tricky to use effectively during debugging (e.g. popping the stack frame doesn't magically change the callsite so if you added extra params it's not going to end well) e.g. https://github.com/TravaOpenJDK/trava-jdk-11-dcevm#trava-jdk...

Re: Malleable software: Restoring user agency in a world of locked-down apps

#80
post #60

The fundamental problem with customizability is that code path complexity is exponential on branching. So it works as long as your app is sufficiently simple, but eventually, the exponents catch up and eat ur software alive.

I think that if the entire computer and operating system are designed better, and the software is designed better, then there are things to be done which would improve the customizability and other things. (I mentioned some of my ideas in some other comments.)

FOSS also helps, but just because it is FOSS does not itself help (and is mentioned in the article), but it is one of the things to be done, too.

UNIX programs with pipes is also one thing that helps, but it is not quite perfectly. Nevertheless, writing programs that do this when working with UNIX systems, is helpful to do. (For working with picture files, I almost entirely use programs that I wrote myself which use farbfeld, and use pipes to combine them; I will then convert to PNG or other formats when writing to disk (I do not use farbfeld as a format to store pictures on disk, but only as the intermediate format to use with pipes).)

Post reply on HN