Live data from Hacker News

Kina Knowledge, using Common Lisp extensively in their document processing stack

lisp-journey.gitlab.io

51–60 of 62 posts

Re: Kina Knowledge, using Common Lisp extensively in their document processing stack

#51
post #36
post #18

Earlier quoted context omitted.

> It was the norm for a single programmer to be doing the work that would normally be a team (sometimes multiple teams). Be careful with what you conclude from this observation. Is it that A) Lispers are generally 10x Programmers, or that B) Lisps are generally poor languages for team environments?

Lisp allows you to build compilers for your own languages. Compilers are a force-multiplier, but then you're the only one that knows your language.

> but then you're the only one that knows your language

This only applies if the language implementation is complex, the language syntax is unlike anything in existence, and the language creator does not pick good names for functions and variables nor write any documentation, manuals, or papers to explain things nor he/she is available for any questions.

Re: Kina Knowledge, using Common Lisp extensively in their document processing stack

#52
post #45

Earlier quoted context omitted.

> It was the norm for a single programmer to be doing the work that would normally be a team (sometimes multiple teams). One thing that surprised me when I entered the professional world was just how much this is seen as a downside . At almost every level, companies will choose technologies and techniques that allow them to hire more headcount, even if that results in a worse end product. Many startups value the appe…

The interview sort of answers this: > Because we operate a lot in Latin America, I trained non-lisper engineers who speak Spanish on how to program Lisp So they grew their lisp heads from raw human. That's not an overhead most companies would readily accept.

I think here he is talking about "integrators" - engineers who write in DLisp rules to process documents.

Re: Kina Knowledge, using Common Lisp extensively in their document processing stack

#53
post #18
post #16

Earlier quoted context omitted.

> The article also mentioned they have 3 programmers One of the problems we had with promoting commercial use of Scheme and then Racket was that -- although some companies were using it to great success -- there weren't any job postings for it. It was the norm for a single programmer to be doing the work that would normally be a team (sometimes multiple teams). And the knowledge of that success wouldn't be well-known…

> It was the norm for a single programmer to be doing the work that would normally be a team (sometimes multiple teams). Be careful with what you conclude from this observation. Is it that A) Lispers are generally 10x Programmers, or that B) Lisps are generally poor languages for team environments?

C) lisp is a "10x" language?

I can't be similarly productive in a language that doesn't have a simple syntax (easy to write) and doesn't allow you to do meaningful live programming.

By the time you've got a major headcount, organizational bottlenecks will render the individual velocity of programming tools irrelevant. Lisp will scale poorly because every language does. It's hard to justify unusual technical choices if there's no benefit. It makes perfect sense that a large organization would eventually drop Lisp.

Every startup is in the game of leverage and thus should keep the team as small as possible. Lisp helps you do that. Once you're over a certain size you WILL pay a huge organizational overhead and there's nothing you can do about it. The more logically monolithic your tech/system is the bigger the price. A lot of work just cannot be parallelized. Most of the things startups are working on tend to be that way.

Re: Kina Knowledge, using Common Lisp extensively in their document processing stack

#54

Earlier quoted context omitted.

One of the things I like about Racket is that it has a cross platform GUI built on GTK in the standard library[1]. It also has a GUI builder app (though I’ve never used it so can’t say how good it is)[2] 1. https://docs.racket-lang.org/gui/ 2. https://github.com/Metaxal/MrEd-Designer

I’ve heard that. How do you find racket for speed and also interactive development? I don’t mind a bit of scheme / racket, so would be curious to jump in.

Racket is not so interactive: https://gist.github.com/vindarel/c1ef5e043773921e3b11d8f4fe1...

Re: Kina Knowledge, using Common Lisp extensively in their document processing stack

#55

> I liked the idea of distributing binary applications as well, which we needed to do in some instances, and building a binary runtime of the software was a great draw, too. fwiw this is possible to with clojure using graalvm. Only mentioning this because of the clojure comparison in the earlier paragraph. While I do lament the JVM I haven't found a straightforward way to build statically compiled binaries with sbcl.…

You have this way: https://lispcookbook.github.io/cl-cookbook/scripting.html#wi...

and truly static executables are coming: https://www.timmons.dev/posts/static-executables-with-sbcl-v...

Re: Kina Knowledge, using Common Lisp extensively in their document processing stack

#56
post #51
post #36

Earlier quoted context omitted.

Lisp allows you to build compilers for your own languages. Compilers are a force-multiplier, but then you're the only one that knows your language.

> but then you're the only one that knows your language This only applies if the language implementation is complex, the language syntax is unlike anything in existence, and the language creator does not pick good names for functions and variables nor write any documentation, manuals, or papers to explain things nor he/she is available for any questions.

I don't think that's true. What you describe is a language that's hard to learn. But plenty of people already have a moderatly hard time when switching languages, or when using languages inside languages. One example would be SQL. SQL is a great DSL for relational databases, but many people never really embrace it or learn it "properly".

Re: Kina Knowledge, using Common Lisp extensively in their document processing stack

#57
post #18

Earlier quoted context omitted.

> It was the norm for a single programmer to be doing the work that would normally be a team (sometimes multiple teams). Be careful with what you conclude from this observation. Is it that A) Lispers are generally 10x Programmers, or that B) Lisps are generally poor languages for team environments?

I can’t imagine the choice of language being strongly correlated with programmer skill (it would be elitist to think so, and everybody feels best in the language they spend the most time in). I think C) Lisp is well suited to certain applications, from what I can see, web development or niche areas where exploratory programming is required. The downside of Lisp is lack of good GUI (CAPI is the best they can offer, bu…

I think the productivity advantages of old-fashioned Lisp and Smalltalk environments are real enough. I've experienced them enough times in practice to be fairly well persuaded.

I'm a Lisper by preference, with almost thirty-five years of experience in the market. Because Lisp is a niche language, I've also had to be competent working with other languages, too, so I have at least some basis for comparison. My impression is that Lisp and Smalltalk do offer real productivity advantages. Don't misinterpret me: I'm not saying there are no disadvantages. I am saying that the advantages are real, though.

A lot of the productivity advantages are development-environment features, rather than language features, but the language features make the development-environment features easier to build and nicer in practice. As a simple example, it's both easier and faster to look up definitions if they're already easily accessible in memory than if you need to write a separate tool to index the source files.

Are Lispers generally 10x programmers? I doubt it, but the language and the best development environments for it do offer some real leverage, and programmers accustomed to them can get a lot of productivity out of them. I've actually been one of those 10x programmers a few times now, as measured by vcs statistics, or feature-delivery times, or client expectations. In each case that it happened it wasn't because I was so much smarter than everyone else; it was because I was permitted to use tools that I knew would give me a lot of leverage, and I already knew how to use them.

Is Lisp bad for team environments? Not that I've seen. The smallest team I've experienced is just me. The biggest was about 50 or 60 people. I've seen teams of Lispers at various sizes that had good discipline, structure, and productivity.

I have noticed remarks from some programmers that they've seen big, messy Lisp codebases, and I don't doubt it. Common Lisp, at least, is pretty unopinionated. You can pretty much do whatever you want with it. It doesn't prevent you from setting up good project structure, and if you want tools to help with that, Common Lisp makes it pretty easy to create them, but it doesn't guide you much out of the box, and if you proceed with no plan or structure, it doesn't prevent you from making a mess. If you want good structure, you have to deliberately create it. I guess I'd say it's not a good language for a bunch of people with no experience in it and no good guidance.

I don't really agree with your point C; Common Lisp is a general-purpose language. I've used it productively for quite a large variety of purposes, from system programming to document processing to compilers to Desktop GUI apps to network-security apps to webapps to Good Old-Fashioned AI, and I haven't found it dramatically stronger or weaker in any specific areas.

There's some truth to what you're saying, but I think it has more to do with the availability of supporting code than with the nature of the language. Some things will be easier to do than others because it'll be easier to find working code of good quality.

That's not a function of the language so much as it's a function of where open-source contributors have chosen to spend their efforts. That's where the relatively small size of the global Lisp community works against Lispers: there just aren't enough open-source Lisp contributors to make all the supporting code that we might like to have available.

A secret weapon? Yeah, sometimes it is. I've surprised folks a couple of times with how much I could get working quickly, and that's generally been to my advantage.

It can also work against you, most especially when you encounter a decision maker who really dislikes Lisp for whatever reason. I've encountered them a few times. For example, I knocked out a working solution to a problem for a bid before anyone else, and got an immediate enthusiastic response. The enthusiasm lasted until the client found out I used Lisp, at which point they ghosted me.

On the other hand, not long ago I was involved in a proof-of-concept that got funded, and one of the evaluators who supported us said in the review that the only reason he thought we could make it work was that we were doing it in Common Lisp. So people's preferences don't always work against you.

Re: Kina Knowledge, using Common Lisp extensively in their document processing stack

#58
post #50

> I liked the idea of distributing binary applications as well, which we needed to do in some instances, and building a binary runtime of the software was a great draw, too. fwiw this is possible to with clojure using graalvm. Only mentioning this because of the clojure comparison in the earlier paragraph. While I do lament the JVM I haven't found a straightforward way to build statically compiled binaries with sbcl.…

Doesn't `(save-lisp-and-die :executable t)` [1] create static binaries? I had a look at one of my SBCL-made binaries on MacOS, it shows this: ▶ otool -L lisp-enc lisp-enc: /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.100.5) /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.11) EDIT: GraalVM takes several minutes to generate binaries, and the binary may not behave…

Yeah, you've got a dynamically linked binary.

There is a work in progress on SBCL to make it possible to create a really static binaries:

https://www.timmons.dev/posts/static-executables-with-sbcl-v...

I tried this fork and it worked for me!

Re: Kina Knowledge, using Common Lisp extensively in their document processing stack

#59
post #50

Earlier quoted context omitted.

Doesn't `(save-lisp-and-die :executable t)` [1] create static binaries? I had a look at one of my SBCL-made binaries on MacOS, it shows this: ▶ otool -L lisp-enc lisp-enc: /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.100.5) /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.11) EDIT: GraalVM takes several minutes to generate binaries, and the binary may not behave…

Yeah, you've got a dynamically linked binary. There is a work in progress on SBCL to make it possible to create a really static binaries: https://www.timmons.dev/posts/static-executables-with-sbcl-v... I tried this fork and it worked for me!

Well, the example was on OSX, and it's generally not a good idea to do static linking there ;) (same on many other systems, you need minimally certain amount of dynamically linked stuff).

Blaze/Bazel rules for Lisp support building fully static SBCL binaries (except possibly for grabbing dynamic stuff that is forced by glibc). ECL also supports static linking.

Re: Kina Knowledge, using Common Lisp extensively in their document processing stack

#60
post #53
post #18

Earlier quoted context omitted.

> It was the norm for a single programmer to be doing the work that would normally be a team (sometimes multiple teams). Be careful with what you conclude from this observation. Is it that A) Lispers are generally 10x Programmers, or that B) Lisps are generally poor languages for team environments?

C) lisp is a "10x" language? I can't be similarly productive in a language that doesn't have a simple syntax (easy to write) and doesn't allow you to do meaningful live programming. By the time you've got a major headcount, organizational bottlenecks will render the individual velocity of programming tools irrelevant. Lisp will scale poorly because every language does. It's hard to justify unusual technical choices i…

> Lisp will scale poorly because every language does

I guarantee you that a highly opinionated language like Go scales horizontally better* than a totally unopinionated language like Common Lisp. It's literally why Google spent a bunch of resources developing it.

It's also why Lispers tend to despise Golang, or deride it as a simple language for average developers.

*Requires fewer resources to get a new hire up and running on prod code

Post reply on HN