Live data from Hacker News

Do One Thing

radar.oreilly.com

51–60 of 136 posts

Re: Do One Thing

#51
post #45

Earlier quoted context omitted.

In this context... "specialized" = Do one thing "flexible" = and do it well. That said, the key ingredient of the Unix philosophy that is missing isn't specialised, flexible tools, it's composability of those tools. Imagine if you couldn't pipe grep output to another program, wouldn't it be a lot less useful? I'd say so. There are ways we can get around this, but they would require a fair amount of development time.…

How does flexible mean do it well? "Do it well" is so vague of a saying that it really could mean any of those things, whether it be flexibility, or simplicity, or etc.

My understanding of the phrase 'do it well' isn't as an injunction but as a way of saying that if you restrict your program to one thing, you'll have the ability to do it very well. It's to contrast it to a program that does multiple things, not so well.

Re: Do One Thing

#52
post #13
post #5

I had two thoughts while reading this. 1 - The need for the web to be profitable in some way makes 'single tools' hard to build. You have to grow users, add features, etc, etc. So even if you have an API or something useful it likely won't scale economically. Unless it's government supported or behind a foundation of some sort. The Twitter API comes to mind here. 2 - This is tricky because for the web to meet the UNI…

> Once again, capitalism ruins everything fun And creates everything fun.

Love that social bonding that capitalism provides.

Re: Do One Thing

#53
post #30
post #9

I agree on the face of things, but what the web is missing from the unix philosophy is an equivalent to |. Without the ability to string multiple, focused tools together even tools that did one thing well(i.e., Evernote) will continue to add features until it does a bunch of things meh.

Absolutely! And just follow that to logical conclusions, to me it seems to answer the question of why we don't have it, right? On the web, "|" (pipe) means integration with other services, and it comes with all the associated trials and tribulations. To make web pipes work, just to even get started, you first have to solve authentication and data format/transfer standards. Those things are a big pain, its not surpris…

The other big factor is that pipes only work because of the power of plain text. The output of every UNIX command is ASCII text, and most of the time, it's ASCII text with columns delimited by \t and rows delimited by \n. And there are command-line utilities like awk, cut, sed, & xargs for parsing & rearranging that text, and funneling it into formats that other commands understand.

The web has a variety of other content types - images, videos, applications, structured data - that don't map well to this model. Before you have interoperable webapps, you need to define common data formats for them to interop.

Re: Do One Thing

#54
> That philosophy was great, but hasn’t survived into the Web age.

The modern "web operating system" is Amazon's AWS, and I'd argue that the unix philosophy survived surprisingly well there. AWS has many services; each one does a specific job really well, and they interoperate very well together. That's the very embodiment of the unix philosophy.

Re: Do One Thing

#55
post #46

I am a great fan of the Unix philosophy and can sympathize with the author and his points, but I really don't know how realistic the whole "make the Internet a new Unix"-scheme is. As others have pointed out, there are great practical difficulties in integrating different web services. Unix has pipes built into the core of the OS - anything analogous would have to be "bolted on" to the Internet, and thus probably tur…

The internet already has a very simple interoperable protocol, HTTP. There is nothing to bolt on really since the pipe is just a channel for text and sockets on port 80 can just as easily act as those channel.

The thing about the pipe isn't, as I see it, a protocol issue, but a UI issue: that is, a simple method of telling your shell (browser, for an OS) to compose tools rather than requiring you to interact with each of them interactively.

To be fair, I don't think we have a good way to do that with graphical OS shells even on Unix, just CLIs, so its probably not surprising that we don't have it in web browsers.

Re: Do One Thing

#56
post #46

I am a great fan of the Unix philosophy and can sympathize with the author and his points, but I really don't know how realistic the whole "make the Internet a new Unix"-scheme is. As others have pointed out, there are great practical difficulties in integrating different web services. Unix has pipes built into the core of the OS - anything analogous would have to be "bolted on" to the Internet, and thus probably tur…

The internet already has a very simple interoperable protocol, HTTP. There is nothing to bolt on really since the pipe is just a channel for text and sockets on port 80 can just as easily act as those channel.

But HTTP is one-directional (disregarding Websockets which is a client thing).

Re: Do One Thing

#57

People mean a lot of things when they say "one thing". "Do one thing" can mean "replace all occurrences of one string with another". Or it could mean "browse the web", which of course isn't really one thing but a thousand things.

I've always wondered how Emacs fits with Unix philosophy? With it you can replace strings AND browse the web, but also play games, do file management, email, chat, etc...

Emacs doesn't really fit with the Unix philosophy. Emacs came from the MIT AI Lab and ITS, not Bell Labs and Unix - it got included with most Unix distributions later.

Editors that do fit with the Unix philosophy (they were written by its original developers) are ed sam and acme.

Re: Do One Thing

#58
post #56

Earlier quoted context omitted.

The internet already has a very simple interoperable protocol, HTTP. There is nothing to bolt on really since the pipe is just a channel for text and sockets on port 80 can just as easily act as those channel.

But HTTP is one-directional (disregarding Websockets which is a client thing).

HTTP is asymmetric (the two sides are not interchangeable), but the information flow is bidirectional. I don't see how that it prevents something like Unix piping from being implemented between web services using it. Seems to be mostly a UX design issue.

Re: Do One Thing

#59
post #5

I had two thoughts while reading this. 1 - The need for the web to be profitable in some way makes 'single tools' hard to build. You have to grow users, add features, etc, etc. So even if you have an API or something useful it likely won't scale economically. Unless it's government supported or behind a foundation of some sort. The Twitter API comes to mind here. 2 - This is tricky because for the web to meet the UNI…

I don't follow your first point. For most web things (where there's zero marginal cost) profitability has nothing to do with scaling.

I thought the parent's first point made lots of sense and I don't really follow your point. Marginal cost for web services isn't literally zero, it is just close enough to zero that real businesses with revenue can treat it as if it is zero. But that doesn't mean that it is at all cheap in the usual sense to run a popular web service.

Re: Do One Thing

#60

People mean a lot of things when they say "one thing". "Do one thing" can mean "replace all occurrences of one string with another". Or it could mean "browse the web", which of course isn't really one thing but a thousand things.

I've always wondered how Emacs fits with Unix philosophy? With it you can replace strings AND browse the web, but also play games, do file management, email, chat, etc...

That is something that got even ESR wondering - chief "Unix philosophy"-advocate and Emacs patriot par excellence that he is...

(Although one thing that can be said for Emacs as regards the Unix philosophy is that it is programmable.)

Post reply on HN