I do remember this quote, but it's a little odd because Unix and the web have a very similar structure. HTTP has more metadata like Content-Type, but it's still fundamentally uniform bytes/text.
This is a feature not a bug! And it's INTENTIONAL for both Unix and HTTP.
The Uniform Interface Constraint, the Perlis-Thompson Principle, and LAYERING structure on top of "flat / featureless" mechanisms.
> So the reason that shell/Unix and HTTP are so common is a MATHEMATICAL property of software growth.
> How do you make a Zig program talk to a Mojo program? Probably with a byte stream.
> What about a Clojure program and a Common Lisp program? Probably a byte stream. (Ironically, S-expressions have no commonly used "exterior" interchange format)
Do Common Lisp users have EDN libraries? Do Clojure users parse Common Lisp s-expressions?
---
Also, Oils adds parsers to Unix shell like JSON, so you don't have to write your own!
Shell was not a powerful enough language to be a real shell :) To interoperate between heterogeneous and diverse runtimes, to glue things together when their creators wanted monoliths (e.g. like Go and the JVM have problems interoperating with C)
---
I'm a big fan of Hickey, and have watched almost all his talks. I often refer to his explanations of programming with maps, which explains why protobufs work - https://lobste.rs/s/zdvg9y/maybe_not_rich_hickey
(something many protobuf users apparently don't understand)
I do recall this comment, but I don't recall him saying much else about Unix.
I think if you can live within the JVM, OK you can do everything in Clojure and avoid parsing. And even Datomic takes it to the next level -- he really walked the walk.
---
But I'd claim you can't build Google or LLMs on Clojure and Datomic. The bigger the software system, the more heterogeneous it is.
Bigger codebases are written in more languages. And they have more formats on the wire.
I even see startups of like 10 people using Rust AND Go now (and JavaScript), which is a little odd to me. I'm all about language diversity, but even I see the value of using ONE language for smaller or more homogeneous problems.
But even tiny software projects now use many different languages.
This is a feature not a bug! And it's INTENTIONAL for both Unix and HTTP.
The Uniform Interface Constraint, the Perlis-Thompson Principle, and LAYERING structure on top of "flat / featureless" mechanisms.
---
It's also the reason for their success!
I'll refer to my recent comment on this - https://news.ycombinator.com/item?id=39925798
> So the reason that shell/Unix and HTTP are so common is a MATHEMATICAL property of software growth.
> How do you make a Zig program talk to a Mojo program? Probably with a byte stream.
> What about a Clojure program and a Common Lisp program? Probably a byte stream. (Ironically, S-expressions have no commonly used "exterior" interchange format)
and the follow-up with EDN - https://news.ycombinator.com/item?id=39931919
Do Common Lisp users have EDN libraries? Do Clojure users parse Common Lisp s-expressions?
---
Also, Oils adds parsers to Unix shell like JSON, so you don't have to write your own!
Shell was not a powerful enough language to be a real shell :) To interoperate between heterogeneous and diverse runtimes, to glue things together when their creators wanted monoliths (e.g. like Go and the JVM have problems interoperating with C)
---
I'm a big fan of Hickey, and have watched almost all his talks. I often refer to his explanations of programming with maps, which explains why protobufs work - https://lobste.rs/s/zdvg9y/maybe_not_rich_hickey
(something many protobuf users apparently don't understand)
I do recall this comment, but I don't recall him saying much else about Unix.
I think if you can live within the JVM, OK you can do everything in Clojure and avoid parsing. And even Datomic takes it to the next level -- he really walked the walk.
---
But I'd claim you can't build Google or LLMs on Clojure and Datomic. The bigger the software system, the more heterogeneous it is.
Bigger codebases are written in more languages. And they have more formats on the wire.
I even see startups of like 10 people using Rust AND Go now (and JavaScript), which is a little odd to me. I'm all about language diversity, but even I see the value of using ONE language for smaller or more homogeneous problems.
But even tiny software projects now use many different languages.