Anywhere is where exactly? I've been thinking of where I could use it for like 10 minutes, and I couldn't come up with anything. Maybe a game engine or web services. It wouldn't make much sense for any kind of desktop software or command line utilities that are supposed to start really fast and have minimal runtime.
A binary has a startup time of like 20 milliseconds, the overwhelming majority of that is setting up page tables iirc. While that's a lot for a small cli utility called in a loop, it's really nothing for a desktop application.
I wish more desktop applications could hit even a 100ms startup time. These days it feels like 5 seconds or more is the norm.
On the contrary, CLI, TUI, and desktop GUI apps are basically the only kinds of apps that benefit from CL and can live with its shortcomings. The startup time of a tool written in CL is short: you just need to load the image into RAM, run some hooks (if configured), and you're good to go. If you don't include loads of dependencies, the dumped image is also not too big, so loading it from an SSD is almost instantaneous. The startup is of course nowhere near that of a small C or Zig binary, but for larger tools it will be tolerable. For TUIs and GUIs, you can work on them interactively and see the changes in the source immediately reflected in the interface of a running instance.
Web services need either cooperative concurrency or M:N concurrency due to the "10k problem". CL only supports threads (OS-level) and promises; everything else is incomplete (eg., delimited continuations, which could be used to build coroutines) due to missing parts in the spec and some language features (eg., conditions and restarts). Of course it can be done, but it won't be as pleasant as using Elixir and Phoenix.
A game engine would work, most likely, unless it was for an MMO (again, concurrency handling). I personally never worked on one, but I see examples of game engines in CL, and they tend to look nice.
In general, single-user desktop (CLI, TUI, GUI) apps are still a good fit for CL, even today (you need to put some work into packaging the app for different platforms, but it tends to be easier to set up than it is for C or C++; harder than Go or Rust, though). It's unfortunately not as good a fit for the backend, at least not until an implementation with good support for concurrency appears. It's nice as an extension language in a larger app (through ECL), and as far as dynamic languages go, it's quite performant, so some computation-heavy apps can benefit from using CL (with SBCL). On the other hand, the ecosystem is quite small, which means dependency-heavy apps are better written in something like Python or a mixture of CL and another language (there are two-way bindings to many dynamic languages and there's mature FFI support for compiled languages).
To be perfectly honest: as much as I love Lisp, I personally gave up on trying to use it, for now. For hobby stuff, I found an even more niche solution that is more enjoyable to work with in the GUI/TUI/CLI space. It also doesn't support OS-level threads, but instead provides coroutines for concurrency - I find this side of the trade-off to be useful/beneficial more often, at least in the code I tend to write. I don't believe the time spent learning CL and other Lisps was wasted, but it's become harder and harder to justify going for CL over the past 15 years, and I finally reached a point where I stopped trying. YMMV though, and I would still give CL a chance if it's your first language of this kind (i.e., providing image-based interactive development, a dynamic language with a native compiler with inline assembly support, a multimethod-based object system, and homoiconicity/macros, etc.).
You can use most of the popular GUI libs, there's a couple Lisp-specific ones but they're not nearly as featureful. https://lispcookbook.github.io/cl-cookbook/gui.html collects most of them; though for gtk4 I'd recommend https://github.com/crategus/cl-cffi-gtk4/ But no matter what you use I think the experience is going to be a bit rough. CLOG is probably the most interesting non-traditional framework but you do have to accept some web idioms.
I'm confused by the GP's assertion that backends aren't a good fit because of the threading model, to me they're one of the best fits. The 10k problem isn't a concern for most software, and in any case there are ways around it. (I don't know what Google Flights does but even at their scale they haven't moved off SBCL. And Hacker News itself runs fine on SBCL, though there probably aren't 10k concurrent connections.) In the ecosystem, there's the https://github.com/fukamachi/woo webserver which binds to libev to handle similar scale as Go was advertising about 10 years ago. And besides some work going on recently on the SBCL dev mailing list to add native fibers/green-threads, there's been non-native versions of them before, and basically any concurrency model you can think of has been built on top of SBCL by someone. (STM, actors, async (one even built on libuv), channels, promises/futures...)
GToolkit[1] - a Smalltalk environment that's based on Pharo but replaces the UI framework and some other parts of the stack. It uses Rust through FFI to interface with and bundle native dependencies.
I don't remember the exact numbers, but when I checked, the GT+Pharo ecosystem (available packages, number of people in Discord, tools with support for the language, etc.) was ~2x smaller than Common Lisp's. It also comes with its own problems, some of which CL doesn't suffer from (the GIL, performance, startup time). But it's very fun to use and play with, which is the most important quality for me in my hobby/side-projects. :)
> The startup is of course nowhere near that of a small C or Zig binary, but for larger tools it will be tolerable.
It's worse than Java and Python and JavaScript I think? The languages that were always disliked for CLI/TUI/GUI apps because of unnecessary bloat they bring due to their runtimes. It's not impossible to use this ofc, it's just inferior to alternatives with minimal runtime, so such an app might be considered a temporary solution to use before someone rewrites it in Rust or Zig or C and people have no reason to use slower and more resource hoggy version. Many people even choose to avoid Emacs for slow startup times, now imagine if something like grep was starting a virtual Lisp Machine underneath. This is why I think it's more promising to consider it for apps and niches that people never tried to keep minimal, such as games and webservices, even if it doesn't have native coroutines or whatever. Using non-standard solution is almost a non-issue and invisible to end user while startup times and RAM usage are very visible.
Also, ofc there's definitely unique things that become available with something that's just as programmable in runtime as it is in development stage. So some kind of very polymorphic app that benefits from growing more native code in response to user actions, could benefit from it. I don't have many ideas of what app really needs this though.
In the past, like two decades ago, I've seen a person using SBCL with some kind of unofficial continuations or green threads for backend webdev in commercial setting. I also remember someone using it in context of virtualization systems, but don't remember their exact usecase.
Yeah, when people say "dopamine hit" nowadays that can mean anything from serotonin to endorphins to even adrenaline. What they usually mean is simply an optimized experience. Optimized, commodified, industrialized, etc, in a way article describes.
Things like hospitals, airlines, 911, should have multiple systems with different software stacks and independent backends running in-parallel, so that when one infra goes down they can switch to another.
For some areas of our critical systems we have three independent software groups program the same exact system on different infrastructure. Just for moments like these...
There is an enormous cost associated with the kind of redundancy you're talking about. Capitalism prevents us from being set up in the way you're describing. Why invest in company A if company B can run the same business with half the operational expenses? Shareholder profit above all.
Is company B allowed to take the full brunt of all the problems when there is a failure, or does government protect it by limiting damages? If company B's cheaper choice leads to harm and lets people and estates sue company B into the ground, then company A is a safer investment even if it has lower returns. If government interaction limits such recovery options, then that is what leads to company B's higher returns not also having higher risks, so they'll be the better investment. But that is a result of government intervention, not the economic system in play.
I've never seen a program running in kernel mode other than AV software. Pretty sure all stuff you listed doesn't. Asking admin permissions doesn't mean it's kernel mode software.
Necropolis, Ziggurat... Imo the best games nowadays are often those that no one heard about. Popularity wasn't a good metric for a very long while. And thankfully games like "New World" and "Starfield" are helping a lot for general population to finally figure this out.
It's interesting thing to explore when you already have a nice big picture,
but overall it's quite misleading in case of genres (or whole branches) which author is not much into.
I'll just save some quotes here since I really like them:
> Kaczynski likened science to a “surrogate activity” that is “directed toward an artificial goal that people set up for themselves merely in order to have some goal to work toward” or some sense of fulfillment.
> “Scientists work mainly for the fulfillment they get out of the work itself,” he wrote. “… Thus science marches on blindly, without regard to the real welfare of the human race or to any other standard, obedient only to the psychological needs of the scientists and of the government officials and corporation executives who provide the funds for research.”
The scientists who DO usually start from goals, don't want to grope around "just for the science" and spend ten years on how "tail spike protein x interacts with blah blah blah"... the ones who aren't blind are usually cast away and made fun of not being "pure scientists" and cast away as "translational". It's an entire caste system lots of people have created for themselves.
So these "translational" people either go back obediently to doing the pure stuff, or they just leave and go to biotech / pharma.
The field is better off viewing those two as two sides of the same coin, but to keep people in the walls they've built a "if you do translational science, you're an outcast and should never come back!"
That is powerful writing. Powerful by orthodox literary standards. In my own notebooks I regard that kind of writing as bad. I call the trap that it falls into "letting language do my thinking for me."
Consider "directed toward a goal that people set up for themselves in order to have some goal to work toward." I've dropped the words artificial and merely. What work were they doing?
I think that the word artificial is imposing a binary, "natural" versus "artificial", on the way that we think about goals. The paradigm of a natural goal is having sex to start a family. The paradigm of an artificial goal is playing golf. Which is science? It has to fall in the artificial bucket, so it is like golf, and therefore of low value.
If I were writing in my own notebook, I would think that I had tricked myself. I've persuaded myself that science is low value. I look for the clever argument that I've used; its not there. I've been incautious in my use of language, stuck in the word artificial and failed to wonder whether there are any artificial goals that are surprisingly valuable.
merely is heavy with implications. One might set oneself a goal in order to have something to work towards, to avoid the tendency to sipping and sampling which so often defeats the aspirations of gifted beings. This might be within a larger context; the aspiration may be towards a noble and lofty goal. merely trashes all that. A simple little word that slots in easily, merely making the words flow more smoothly. And yet it has smuggled in heavy negativity. Once again language does our thinking for us, guiding us towards a conclusion, and concealing from the author his lack of justification.
Turning to the second quote, one notices that blindly is a powerfully pejorative word. Who wants to be blind? Here is does triple duty, with three meanings. First, we are doing science because we are curious about something that we do not know. It is a cliche to call such groping in the dark blind. So no-one can disagree that science marches on blindly. The phrase "real welfare" intensifies the negativity. Notice the weasel word real. Nothing and nobody can meet the test of having regard to real welfare because the word real licences us to raise the standard for what counts as welfare into an unknowable, remote future. Science must confess to not being able to foresee ultimate consequences and confess a second time to being blind.
The third meaning of blind refers to the reasonable critique. It is hard to respond appropriately to even foreseeable medium term consequences and scientists often fail to do so. Is this reasonable critique actually justified? The claims made by the previous two meanings of the word blind were true, even if unimportant, so it is tempting to nod this through. The third meaning gains our approval by the momentum of the first two meanings; another example of language doing our thinking for us.
If we can escape the momentum of language, the example of Louis Pasteur will spring to mind, or Humphrey Davy investigating flames to invent the safety lamp. Scientist sometimes pay close attention to the foreseeable, medium-term welfare of mankind.
Is it true to say that science marches on, obedient to the psychological needs of scientists, government officials, and corporate executives? Yes, this is obviously true. Yet it is only that sneaky little word only (which I left out; did you notice?) that makes this important.
Ponder the tale of medicinal chemist trying to explain to his boss that it is actually the mice that are in charge. Science can only march on if it obeys the mice. Leaving them out misses the point entirely. That little word only both makes the ringing phrase important-if-true and hopelessly-false.
Notice how hard this overlong comment works to expose how language does our thinking for us. It is an example of Brandolini's Law. Cultivate a horror of powerful writing, before it tricks you into believing falsehoods. No-one is coming to save you. Untangling how language does our thinking for us is too much work.
It is kind of true that the neoliberal lense through which science and academics are directed and funded is a form of ideology which is not always parallel with the improvement of the human condition, and I would argue at times it is even contrary to improvement of the human condition..
But there is no replacement ideology which can guide science uniformly toward an objectively better human condition. That is because any such ideology is as beholden to capitalism as neoliberalism. Science cannot escape the overarching power of capital while still depending upon it's forces to propel it.
Thus I agree it is an artificial goal, but more than a lie told by controlling beurocrats, it a lie told even to its adherents, as is inherent in ideology. Further, it is an inescapable lie produced by the organization of means.
The answer to this ideological trap we find science caught in is succinctly responded to by Star Trek. Post-capitalist post-materialism is what liberates science from these constraints, not some "opening of minds" accomplished through terrorism.
I think you get the wrong idea. What he basically says is that scientists mostly do science because they enjoy doing it, and everything else he says is a consequence of that. People in general tend to gravitate to activities which they enjoy in terms of process, and science is no exception. Usefulness of their work would be a nice side effect, but people rarely do things purely for result, especially when it's something that requires a lot of time and efforts. Basically we are inherently hedonistic creatures and there's no way changing that.
Scientists indeed mostly do science because they like it, but it's supposed to be that way and it's supposed to be funding managers that are responsible to direct that towards the welfare of humanity. That they don't is a matter of ideology. Kaczinsky made a mistake in attribution of responsibility, scientists aren't supposed to bear that responsibility in our system.
"obedient only to the psychological needs of the scientists and of the government officials and corporation executives who provide the funds for research.”
If you are going to defend the ramblings of psychopathic terrorists because they vaguely resemble semi coherent critical theory, at least read all the words.