There seems to be a weird version of the Efficient Market Hypothesis going on in the comments:

If niche lang is so much better, then why is no one using it?

Well, quality doesn't necessarily lead to popularity. I would encourage talented solo devs to seek work in niche languages, at least once in their career. You can deliver more value, work with interesting people and solve more interesting problems.

Life is too short for Java CRUD.

> I'm the last person on Earth to tell someone to be patient, but if you actually want to ship a company's production code in Gleam or Crystal, I highly suggest you put up 2-4 small projects first

As someone who has used Nim in-anger and production at a couple companies now (and am currently using it to build our firmware for our industrial IoT sensor platform), I can wholeheartedly agree with this.

The first couple things I built in it at previous positions were small internal tools. They went well, team members contributed to them as well, things were good. It was that, plus the unique constraints of this firmware project that allowed us to have the confidence that it would work well -- and it has.

Of course, Nim is sort of cheating, as it being able to be compiled-to-C-sources means we have an out at any point we want, both in terms of being able to easily bind and use driver code from vendors, to wrapping up a Nim object file with a nice C header to call from some C/C++ code if need be.

Now: our backend is Java, and our front-end is Typescript and React. Pick your battles! If we were swinging for the fences with some other niche server side, and Elm or something (as much as I enjoy playing with it) for the client-side, as well as trying to use something non-standard for the firmware itself, I'm sure we would've failed immediately.

But we have our devices out in the wild in rural Papua New Guinea where no one's going to be flashing our boards for us, and they're working fantastically :)

I'm about to embark on my master's thesis, in a domain[1] which could realllllly use the "attach to running process; re-evaluate code and have the system just keep going" aspect of Lisp languages.

I know Python best. But I have reached my breaking point with its syntax, and its lack of binding constructs, and lack of symbol datatype, quote, etc. I am intending to use Clojure ... but I have to ship this thing by May 2023 come hell or high water.

All else being equal, I will proooobably be able to go further with Python. But I'm concerned it will hamstring me from doing the crucial feature of "extending the design [ie code] of a game as it runs" since, AFAIK, it's difficult to get a Lisp-ish experience of total live reloadability in Python... jurigged[2] and reloading[3] not withstanding.

I know some common lisp so I'm not a total lisp noob. I've learned enough CLJ to be dangerous ... but I'm worried I'm backing myself into an endless hole by using a language I'm not yet master of. Yet, I think the features of the ecosystem (total live reloadability of a CLJ/CLJS app! with current state preserved even down to what a user has typed in the HTML UI!) are so tempting...

Just venting out loud. comment/contact if you have suggestios or are curious about the project; i'm soon to begin blogging as I develop it.

[1] I'm reinventing the "virtual tabletop." Current ones are so fucking shallow. [2] [3]

I feel that. I had a look at compiled languages to replace/complement my usage of python. I wanted something simple (no manual gestion of memory, thanks) and easy to my eyes, but efficient, and if possible fresh but with a thriving community.

I looked at D, Crystal, Nim, Go, Rust, Haxe, Swift and Zig (and C/C++, even Pascal). The language I liked the most (by far) is Nim, but unfortunately the niche community makes it a no-go for using it at my job, and the lack of hype like Rust makes me pessimist about its future.

The second most interesting languages where Rust (but the borrow checker and the amount of ', |, <, > intimidate me) and go (but for a weird reason I'm not hooked by its syntax).

My conclusion was that where I work (not a dev company), I can't use nothing but java, python and javascript if I want my code to be sustainable, and that I will keep Nim or maybe Rust/Go as a low level hobby

Edit: as a funny note, during my exploration i stumbled upon array languages programming languages like K, and I'm convinced there are mainly a scheme to guarantee jobs for people using them

This is one of the things I love about OCaml. Since answers are not a stackoverflow search away, it forces me to actually understand what I'm trying to do. Everything takes longer at first but I end up building a deeper understanding than if I was using JS or Python. It's something I could force myself to do in those two languages, but it's hard. Artificial limitations like not having that possibility in the first place can sound silly at first, but it's something that people use all the time. It's the idea of using a system instead of relying on willpower to force yourself to do the right thing and set yourself up for success.
I think it's getting harder and harder to justify using anything but the most popular languages and frameworks.

You need a VERY good reason to use anything except TypeScript/C#/Java/Golang/Python/React/Vue/Postgres/MySQL/SQL server/Oracle. Perhaps Rust. These technologies are good enough to get almost anything done these days. There's exceptions of course for example games tend to written in C++ and embedded is often C.

Apart from anything, you should be using these most popular technologies if only for the sake of recruiting.

Using less popular technologies like Erlang/Dart/Kotlin/Ruby/Elixir/OCaml/F# or whatever weird new JavaScript React alternative thing got you interested lately is a bad idea not just for recruiting but for support and community and documentation.

If you are the person deciding which technologies to use, you should probably be using the most mainstream thing you can, not the coolest newest thing that you read on Hacker News. There's any number of companies saddled with their main systems being built in the weird assed framework that the fourth-to-last CTO decided was a good idea, and those companies are now stuck with the problem.

I should note of course that my comments refer to company/organisation development. For personal projects or fun or whatever you should do whatever the heck you enjoy.

Recently I'm considering building an information system for the company I work for and I believe it would ultimately look like an expert system.

This has naturally led me to prolog, but this is a very scary proposition for me to try and sell to the company though they have been very supportive.

It's a powerful tool but just so esoteric and I worry it'll be a pain to build a production grade system that can be worked on by someone other than myself.

Great post. I see weird language projects beyond solo/hobby stage go in two directions. The first is the “beating the averages” approach where they double down on the weird to attract higher level programmers attracted by the chance to play in a preferred niche. The second is a gradual shift towards conventional languages as the problem of maintaining a codebase at scale with an ever changing team becomes a dominant challenge. As someone with an irrational attraction to the weird langs my heart is with the first group but if I was actually running a business I’m sure the second would seem very compelling.
I identified with going through these weird langs in an attempt to get a big productivity multiplier. It also failed for me haha!
I tend to be more pragmatic. I advise people to check the availability of jobs in their area for a given language (or framework), the relative pay of these jobs, and choose what to specialize in based on that. Passion fades, but you’ll always need a job. Chasing fulfillment through work isn’t sustainable for most. Find meaning and purpose outside of work. Just my .02.
> If you need to inspect unicode properties (or uppercase or lowercase unicode texts) there is uucp.

Anyone else read this and feel really old?

Comparing and contrasting Erlang’s BEAM with Java’s JVM taught me an absolute ton about software engineering.
Maybe all languages are weird, and we just happen to be more used and adapted to a certain weirdness?
Heh, C++ -> Scheme being the first journey to a weird language, I guess it's all a matter of POV. "Dragons aren't flying out of my nose anymore, what is this?"
I love writing in weird languages. Besides thinking about programming in a different context, being forced to read the technical documentation, source code, or just having to figure it out happens more often when I can’t just copy an answer from stack overflow. I find the latter just too tempting and easy when programming in a mainstream language
The article describes strategies to help when developing in weird languages. But they're helpful ideas for other contexts, too. When working with external systems or unfamiliar configuration formats, the same forces are at play.

For instance, TFA suggests sitting down with a pot of coffee to read the language docs sequentially (they were written by a hermit). This is also a great way to try to familiarize yourself with a mystery system.

The author recommends paying attention to building your workflow, since you'll be figuring things out as you go and the cost of forgetting details is high. I've found the same to be the case when working on integrating unfamiliar systems: early investments in automation and testing pays dividends.

Solid advice, worth the read for me just to uncover this gem.

I got burned on a weird language (Elm) so now I avoid them. No Rust for me, no Clojure, no Groovy.
FFS if I read yet another article bringing up cats vs scalaz as relevant to Scala today, I'm gonna keep my cool and ignore it with prejudice, just like I did this one.

If you have so little awareness of the Scala ecosystem that you don't realize how laughable such a remark is in 2022, yet allow yourself to have such a strong opinion on the language, I have less than zero interest in the rest of your opinions about "weird languages".