Live data from Hacker News

Programs are a prison: Rethinking the building blocks of computing interfaces

djrobstep.com

71–80 of 195 posts

Re: Programs are a prison: Rethinking the building blocks of computing interfaces

#71
post #13

> We need computing environments ... without the concept of applications appearing at all. Platforms keep trying to enable this, but application vendors want to control the UX and branding, so they're not going to provide these generic reusable building blocks. Android, for example, lets apps make use of views from other apps and securely delegate a task (e.g. take a photo, pick a file, etc.) to the user's preferred…

Author here, yes this is a big problem (the biggest?), as the incentives are all wrong. As I noted in the post: "Often ... apps will have features to integrate with other apps and the wider operating system - but not so much that they become invisible. Instagram still wants you to see its logo, consume its specific content and stay within its ecosystem. Once again, the implementation and architecture are driven by ec…

Not that I disagree with your overall assertion, but without economic incentive there is really no incentive in most cases. For someone who does have economic incentive, it's really business risk reduction 101 to not pin your application to a network of invisible and hidden dependencies that you have no control over.

Re: Programs are a prison: Rethinking the building blocks of computing interfaces

#72
post #24

Earlier quoted context omitted.

Indeed, it sounds like the author is looking for the UNIX of the 21st century: * Widely reusable meaning: everything behaves like a file. The types of files we can have are defined by specs: an Image can be described as a PNG file, which every process can understand. A table can be a CSV or a SQLite file. A Conversation can be a maildir folder. We might not have the best descriptions of "things" but we do have someth…

A lot of what you are describing exists in Plan 9: Under Plan 9, UNIX's everything is a file metaphor is extended via a pervasive network-centric filesystem, and the cursor-addressed, terminal-based I/O at the heart of UNIX-like operating systems is replaced by a windowing system and graphical user interface without cursor addressing, although rc, the Plan 9 shell, is text-based. Source: https://en.wikipedia.org/wiki…

Plan 9 has been on my "things I need to try" list for as long as I've known it, but I've never gotten around to do it. Maybe it's time to tick some boxes off that list now that a new lockdown has started in here.

Re: Programs are a prison: Rethinking the building blocks of computing interfaces

#73

This is a very old-school way of thinking, without any mention of privacy or how to share data safely between different users. As soon as you have multiple users, especially when they don't trust each other, things get much more complicated. Should you really be able to do anything you like with your bank account or DMV record? And do you really want the people you interact with to download all the photos you share?…

Seems to me that objects provide a much better way to do security than applications, as they allow permissions to be much more specific and granular.

Re: Programs are a prison: Rethinking the building blocks of computing interfaces

#74

PostgreSQL has a feature called Foreign Data Wrappers. It's certainly not what th OP imagins, but still pretty cool to query and join external data sources.

I was not aware of this feature. It is REALLY cool...even if I’m struggling to think of a situation where I would prefer it over doing the “joins” in application code, at least for the drivers I looked at when I searched this space. If “smart” drivers already existed for making sense of schemas across platforms (including performance characteristics that Postgres would leverage) then I would drop everything and go all in on this.

Re: Programs are a prison: Rethinking the building blocks of computing interfaces

#76
> Think about adding up some numbers in a tabular structure. That's straightforward with most programming languages. But what if that same table is in a web page, or a mobile app, or a PDF? It's right there on the screen, it's probably encoded as a table in the markup. So the data is there. And yet, we can't query it.

I mean, it sounds like you're describing command line tools that fetch the data you want, wherever it might exist (in a table, in an image, on the web, across a network link, whatever) and pipes the data you're interested in on the command line so you can use a whole ecosystem of filtering/transforming/combining/querying whatever — even your own code.

> Currently, "doing programming" is a segregated activity from mainstream computing - separate software, command lines, specialist knowledge, clunky text-driven interfaces.

What's clunky about a text-based interface like a command line, or code written to process simple data in text form or in files or in a database? It seems like you have a /integration/ and /ingestion/ problem, not a programming or app design problem. The issue is that, wherever the data lives, you simply need to get it out and transformed into a format that makes it easy to process it with the amazing and existing tools that have existed for decades.

The reason that apps, websites, etc. exist are either because those interfaces aren't built for programmers to consume (i.e. it's for non-technical users, or business people, or some other purpose), or out of ignorance of the power of the command line, or because of personal preferences of the person who designed it.

> How do you build ubiquitous programmability into interfaces without adding clutter or reducing usability?

You don't. You build integrations and ingestion pipelines to move data from wherever it may currently live into a place that is easy for your system to process.

The reason you can't get ubiquitous programmability is because different users/consumers need different things from interfaces, and that's just a simple fact of life. The closest (and one of the most powerful) thing we have that's pretty close to ubiquitous across so many different types of users are spreadsheets. But these come with tradeoffs as well — first of all if you just need the information and don't want all the surrounding capability then a spreadsheet is overkill. If you need rigid validation, and hugely powerful query capabilities then it needs to be in a database.

> The realization that the software experience is still built on artifacts of computing from the 80s like text-based command lines is a lot less surprising considered within the context of this ongoing decline.

Software is built on these text-based command lines because they work. They're not clunky once you get to learn them — they're pretty much the best thing anyone's ever done. They're still around because no one has improved on them to a degree so significant as to replace them.

It sounds like this article is proposing a new way to do things, will which just end up being yet another walled garden. It's absolutely preposterous to think you're going to reinvent 60+ years of advancements in computing when the things that have been working, evolving, and still constantly improving for at least the last 20 years of those 60 years work incredibly well already.

> Climate change has shown us that mere awareness of the situation we are in isn't enough. Actual liberation from disaster requires a bold change of direction and a acknowledgement of shared, public goals beyond the financial.

Climate change taught us this? Wow. Learn your history. There's /always/ a mix of short-term and long-term research going on, there always will be, and while the mix might change a bit no one part of it has even been completely dried up. Some people and organizations have short-term goals. Some have long-term goals, and lots of orgs fall somewhere in between. Innovation only looks like a really inefficient search and cobbled-together mess when looking at it in hind sight, where you can look backwards and see, "If only the people 20 years ago would have done X, Y, and Z and not wasted time on A, B, and C we would have been in the present 20 years earlier" —- but the major problem with this kind of thinking is that this is only obvious in hind sight, and nobody has the benefit of predicting the future from the present. Is there waste? Sure. But the idea that old stuff is clunky, or terrible, or poorly designed just because you're judging it from modern standards and a place where you have access to more information than people in the past is just silly. You're just going to wind up creating yet another attempt at "solving" computing once and for all. This kind of silver-bullet thinking is naive at best. No one has invented a silver bullet because there either isn't one, or so much collectively learning needs to happen /before/ it can be found that we just need to keep doing the sometimes boring work of trying things and seeing what works. It doesn't feel glorious in the present, but that's what it takes.

The problem with judging the past is that there's always waste, you never know which part is the waste and which part is going to lead you to a good solution. The searching (researching) is what gets you there, and it's hard work.

> Rare-but-notable efforts like Xerox PARC suffered similar fates, able to fend off the bean-counters for a while but not indefinitely.

This is romanticism, and "good old days" kind of thinking. The past is worse in almost every single way, and to put Xerox PARC up so as to imply that modern research orgs aren't probably better in almost every way is a bit foolish. Is modern research flawed? Sure, but so it was in the past as well.

Re: Programs are a prison: Rethinking the building blocks of computing interfaces

#77
post #13

> We need computing environments ... without the concept of applications appearing at all. Platforms keep trying to enable this, but application vendors want to control the UX and branding, so they're not going to provide these generic reusable building blocks. Android, for example, lets apps make use of views from other apps and securely delegate a task (e.g. take a photo, pick a file, etc.) to the user's preferred…

The answer is to push the "application vendors" back into the browser. None of them are really writing anything that needs to be running natively, it's almost all just a front end to some service on the internet.

Real computer applications are almost universally developed by researchers and the open source community and look exactly like this. No "application" just tools you install into your system that are watched by the community for breakage/malware or worst case offered as a git repo/tar for free.

Re: Programs are a prison: Rethinking the building blocks of computing interfaces

#78

Oh yeah; we have/had this-- it is called HTML and none of us got the idea behind it (I certainly didn't); so, instead we re-created the prisons we were, and are, trying to escape. It also is really hard to profit from ONLY meaningful data thus the death of things like RSS feeds. Can't shovel advertisements, trackers, and spyware down someone's throat just sending a nicely formatted HTML table that the client decides…

IMO one of the great things about eg semantic forms in HTML is that instead of building a GUI you essentially write a machine readable description of an API that a GUI gets generated from in a way that allows for optional styling.

When used correctly it's hard to imagine a better way to provide access to a remote service. Of course it's rarely used correctly when money is involved but I think that's a human thing that happens and the technology can't change it.

Re: Programs are a prison: Rethinking the building blocks of computing interfaces

#79
post #77
post #13

> We need computing environments ... without the concept of applications appearing at all. Platforms keep trying to enable this, but application vendors want to control the UX and branding, so they're not going to provide these generic reusable building blocks. Android, for example, lets apps make use of views from other apps and securely delegate a task (e.g. take a photo, pick a file, etc.) to the user's preferred…

The answer is to push the "application vendors" back into the browser. None of them are really writing anything that needs to be running natively, it's almost all just a front end to some service on the internet. Real computer applications are almost universally developed by researchers and the open source community and look exactly like this. No "application" just tools you install into your system that are watched…

Can you explain what definition of application you are using in this post. The only application I use that is just a front end to a web service is a client tracking software I am required to use for State level reporting purposes at work. All the rest of my software, ranging from development, to digital audio, video, and art, rendering and 3D work, etc, are all native and local. Some are open source, but many are not.

Re: Programs are a prison: Rethinking the building blocks of computing interfaces

#80

Earlier quoted context omitted.

Thank you for the links! > A common use of COM was scripting with Visual Basic in the 1990s ... This sounds nifty!

It is used for a lot more. Want to integrate Windows Explorer in your application? COM. Custom property pages in Windows Explorer? COM. Custom folder view ala zip folder? COM. Want Windows Explorer to be able to extract metadata from your custom file format, or Windows Search to search it? COM. Want to play or manipulate video using the installed codecs? COM. Want users to be able to drag an attachment from Outlook a…

COM is still used a lot in audio (at least the COM ABI) because it allows to share objects between programs/shared libraries and manage their destruction. It also has a nice way to add functionality.
Post reply on HN