Hacker News new | ask | show | jobs
by samsquire 1302 days ago
Join any company and organisation and look at their build and deployment tooling.

Unless they are using Kubernetes and even then, you shall find a very complicated bunch of languages:

- shell scripts

- Dockerfiles

- Kubernetes YAML

- Makefiles

- Bazel

- Ansible

- python scripts

- Jenkins XML

- Groovy scripts

- Ruby scripts

- CloudFormation

- Terraform

- Fabric or other deployment deployment script

It's very hard to fit together and understand from a high level.

The last thing they were working on at my previous company was a YAML format to define a server, to go through the organisational structure of the company to manage computer systems.

Some people mentioned LISP in this comment thread. For me LISP is an intermediate language, I would never want to build a large system in LISP. It's not how I think about computation.

2 comments

Can you expand on you mean when you say that Lisp is not ‘how [you] think about computation’. I have never seen that phrase used regarding Lisp, usually it’s mentioned in regards to logic or other much less mainstream paradigm than the imperative/semi-functional paradigm in Lisp.
I see LISP as being useful for codegen and intermediate representation and AST representation but I wouldn't want to program with it directly without a tool to create a structure that is understandable to me. All the parenthesis!

I wouldn't want to maintain or work on a large Clojure codebase written by other people. I've done that three times.

For reference, I think Python is easy to write and read and understand.

I wrote a simple toy multithreaded interpreter and I've written part of a compiler that does codegen to target the imaginary interpreter. It's basic but my AST is a tree that could be represented in LISP. I use a handwritten recursive descent pratt parser. The language looks similar to Javascript.

I know it can fixate your thinking if you think of it too much in this manner, but I think of modern computers as turing machines. They loop or iterate through over memory addresses which are data or instructions and execute them.

That said, my perspective is not traditional. I design and try implementing programming languages. I am interested in the structure of problems and code, asynchrony, coroutines, parallelism and multithreading more than anything else. Even more than type systems.

I think the expression problem is a huge problem that doesn't have good solutions for managing complexity.

I find other people's LISP code to be difficult to read whereas I can understand a Python, Java algorithm.

What am I trying to say? The structure of the program in the developer and compiler's head is different from the instructions actually executed by the computer. LISP is nearer to the instructions executed by the computer than what exists in my mind. In my mind exists relationships, ideas more complicated and not structured in post order traversal. A post order traversal of LISP is the codegen.

any company that is doing something that is web-based. many have huge functions that have zero to do with the web.