Most active commenters
  • nathanmarz(13)
  • epolanski(3)
  • fiddlerwoaroof(3)
  • thih9(3)

141 points winkywooster | 75 comments | | HN request time: 1.89s | source | bottom
1. metadat ◴[] No.40216826[source]
> Rama can build end-to-end backends at any scale on its own in a tiny fraction of the code. At its core is a new programming language implementing a new programming paradigm..

Grand claims, but where are the super powerful demo apps? The getting started docs are a trickle of info..

https://redplanetlabs.com/docs/~/operating-rama.html#_access...

The "demo gallery" has a few cherry picked examples, but I don't see how this fulfills the claim of a "new paradigm". I wanted to be blown.. but this ain't it.

https://github.com/redplanetlabs/rama-demo-gallery

Oof.

replies(6): >>40216866 #>>40217060 #>>40217183 #>>40217692 #>>40218913 #>>40220990 #
2. nathanmarz ◴[] No.40216866[source]
Check out twitter-scale-mastodon, which is an implementation of Mastodon's backend from scratch that scales to Twitter scale. It's more than 40% less code than Mastodon's backend and 100x less code than Twitter wrote to build the equivalent.

https://github.com/redplanetlabs/twitter-scale-mastodon

https://blog.redplanetlabs.com/2023/08/15/how-we-reduced-the...

replies(2): >>40216928 #>>40217001 #
3. jimberlage ◴[] No.40216868[source]
Is anyone using Rama at scale? This isn't a complaint about it being closed-source, people have to make their money somehow. But I've seen a lot about Rama's scale when the only things to check the claim are a private beta and a single-process dev build.

I'm super curious to hear from people who have tried it for larger projects!

replies(2): >>40216895 #>>40227301 #
4. nathanmarz ◴[] No.40216895[source]
A few of our private beta users are using Rama at larger scale (>1M appends/second). We'll be publishing case studies eventually.
5. metadat ◴[] No.40216928{3}[source]
> Running on a real cluster

> Until Rama is publicly available, the only way to get access to the full Rama release is by applying to our private beta.

I thought it was coming out last August? What happened?

(As per your link, https://blog.redplanetlabs.com/2023/08/15/how-we-reduced-the...)

Edit: @nathanmarz that's cool you have enough interest to keep things moving with it being private. I'm only interested in open solutions for this domain, though. IMO, accepting lock-in is a lot to ask. Best wishes ~ MD

replies(1): >>40216953 #
6. nathanmarz ◴[] No.40216953{4}[source]
We released the public build last August, which can be used to experiment with Rama. Details on that are at the link below. Otherwise, we're still in private beta and access to the full Rama release to run real clusters is just for private beta users.

https://redplanetlabs.com/docs/~/downloads-maven-local-dev.h...

7. finnh ◴[] No.40217001{3}[source]
> These numbers are a bit better than Twitter’s numbers. Because of how unbalanced the social graph is, getting performance this good and this reliable is not easy. For example, when someone with 20M followers posts a status, that creates a huge burst of load which could delay other statuses from fanning out. How we handled this is described more below.

Huh. I haven't written myself a twitter, but I've always assumed that this problem is solved by a mix of fan-on-write and fan-on-read. Most people are fan-on-write, but those with a follower count > $THRESHOLD are fan-on-read.

The fan-on-read set is small enough to be easily cacheable, so the extra reads required to service a follower's feed are more than compensated for by the fact that the content is in RAM in a cache.

Sounds like RedPanda went exclusively with fan-on-write. I'd be surprised if Twitter does the same - but it sounds like OP has more knowledge about this than me, so I'm happy to be educated!

replies(1): >>40217181 #
8. ntonozzi ◴[] No.40217060[source]
Here's an example of the backend code:

https://github.com/redplanetlabs/twitter-scale-mastodon/blob...

It certainly looks like it does a lot with their DSL, but as a newcomer it's really hard to parse.

replies(1): >>40217165 #
9. nathanmarz ◴[] No.40217165{3}[source]
I suggest starting with the tutorial and the heavily commented examples in rama-demo-gallery, linked below.

https://redplanetlabs.com/docs/~/tutorial1.html

https://github.com/redplanetlabs/rama-demo-gallery

replies(1): >>40218656 #
10. nathanmarz ◴[] No.40217181{4}[source]
The chronological timeline at Twitter fans out on write. This makes sense when you consider that the most important application metric is the latency to load the timeline. That latency is a lot lower when you only need one query on the materialized timeline rather than a ton of queries for everyone you follow.
replies(1): >>40217736 #
11. geodel ◴[] No.40217183[source]
Well there is whole bank transfer implementation there and thoroughly commented too. Some entrepreneur can take this and run with it to create next generation banking platform.
replies(1): >>40221372 #
12. MH15 ◴[] No.40217388[source]
I think we've spent a lot of time looking at backend and frontend web app development as separate. In my work, TRPC (https://trpc.io/) solved this. I hope others in different frameworks find a similar solution soon.
13. epolanski ◴[] No.40217466[source]
> Lisps have great control over what happens at compile-time, which lets you do incredible things.

> Lisp programmers have struggled ever since it was invented to explain why this is so powerful and why this has a major impact on simplifying software development

I've written some Common Lisp, Scheme, Racket.

I like them.

But what op defines as a feature is actually what kills all those lisps but Clojure where macro abuse is rare.

Everybody implementing their abstractions, every library implementing their own language, I like those features, macros are fun, but it just doesn't scale neither in open source and even less at work.

Haskell to some extent too suffers the same issue, simple Haskell is nowadays a dead project, but every single project has different language extensions, syntax, etc..

I feel like Lisp and Haskell attract people that love programming more than shipping code.

Which is why at the end of the day, php has more killer software than all those languages combined.

replies(5): >>40217975 #>>40218227 #>>40218333 #>>40220555 #>>40221174 #
14. cactusfrog ◴[] No.40217692[source]
The Clojure community is extremely cult like. I worked with a dev who tried to push Datomic, and despite the huge flaws with his system, and the fact that it was closed source, he would continuously tout how much better it was than a relational database. I don’t believe the hype.
replies(4): >>40218779 #>>40223435 #>>40225084 #>>40226474 #
15. snitty ◴[] No.40217709[source]
>Rama’s language is Turing-complete…

Amazing they could accomplish such a feat.

replies(1): >>40218024 #
16. finnh ◴[] No.40217736{5}[source]
Good to learn, thanks. "Everyone you follow" isn't quite what I was saying, but I also don't use twitter so I'm doubly in the dark here.

I'm surprised that someone with, say, a Twitter problem and tens of millions of followers - the two seem to go hand-in-hand - drives tens of millions of writes every time they post. But there you go, learned something today.

replies(2): >>40217769 #>>40217943 #
17. nathanmarz ◴[] No.40217769{6}[source]
Back in the days of the fail whale, Twitter would go down when Justin Bieber tweeted because their system couldn't handle the load.
18. fizx ◴[] No.40217943{6}[source]
I was tech lead on that subsystem for a little while in 2010. A lot of smart people thought about the hybrid approach, either by using the search index to drive the timeline or building a custom ring-buffer-based index of all tweets. Ultimately two systems are harder to maintain than one, custom indices are hard, and the low-complexity approach dominated a higher-performance approach.

Also, contrary to popular opinion, we didn't go down when Justin Bieber tweeted, but we did have elevated error rates when large quantities of Justin Bieber followings put pressure on the MySQL row lock of his following count. In retrospect, lock striping would have helped, but the migration would have been horrific.

19. fiddlerwoaroof ◴[] No.40217975[source]
This is one of those perpetual myths about macros. Ruby on Rails metaprogramming is often harder to debug than macros in Common Lisp. Flink and Spark work by generating and loading Java code at runtime (macros) but, since Java has no language-level support for macros, the generated code is very hard to inspect and debug.

What killed most lisps was the AI Winter and the concurrent drying up of DARPA funding.

replies(1): >>40218437 #
20. titanomachy ◴[] No.40218024[source]
This seems unnecessarily cynical, they're just stating one of the design decisions that they made. When you design a new DSL you could choose to make it Turing-complete (e.g. Ruby on Rails) or not Turing-complete (e.g. Terraform's HCL). The point isn't that one is more technically difficult to build than the other.
21. titanomachy ◴[] No.40218025[source]
> At its core is a new programming language implementing a new programming paradigm, at the same level as the “object-oriented”, “imperative”, “logic”, and “functional” paradigms... Rama generalizes the concept of a function into something called a “fragment”... a fragment can output many times (called “emitting”), can output to multiple “output streams”, and can do more work between or after emitting.

This sounds really similar to programming with observables (e.g. RxJS), is a "fragment" an even more general concept?

I used observables when I did frontend development, I found it a useful paradigm (once I got my head around the idea).

replies(1): >>40218157 #
22. nathanmarz ◴[] No.40218157[source]
A fragment itself is a generic programming construct that serves the same purpose as a function (just more general). When used in Rama topologies, they serve a similar role as observables in terms of reacting to new data as it flows through and sending any amount of information downstream to any number of output streams.
23. ww520 ◴[] No.40218227[source]
For compile time control and meta programming, I found Zig's comptime system to be the best. It blends with the regular syntax seamlessly and solves several problems at the same time. It's one of the best things came out of language design in recent years.
24. ThinkBeat ◴[] No.40218325[source]
I remember when the first time i read about Rama, with the blog post about having duplicated Twitter scale at 100x code or some such.

Which all in all, if you have built a platform/runtime/language and you pick one particular example to highlight it, being able to achieve XXXX% less than is trivial.

I was curious about all the bluster then, Seeing this post I am somewhat disappointed that there does not appear to have been a lot of visible progression.

But I guess it is still running semi stealth in private beta.

I will be interesting to see what becomes of it.

replies(1): >>40218473 #
25. fr4nkr ◴[] No.40218333[source]
I've used Lisps on and off for a decade or so, and my experience with it is pretty much in line with the Grammarly devs' summary: misuse of macros is one of those things people just assume is a major problem, but in reality is quite rare, even in cases like Emacs Lisp where most packages are developed by just one person. Lisp is not Perl, its users do not create spaghetti mazes for fun.
26. epolanski ◴[] No.40218437{3}[source]
I don't think I've expressed myself well.

When I say software at scale I mean:

- going on GitHub opening a file and understanding what's happening

- reviewing a PR and figuring out stuff without requiring an ide

- having easy onboarding with devs already accustomed to a base language and its patterns

Java, C, TypeScript, Scala, Kotlin, etc. Pretty much all major languages offer this: less power but much less ambiguity and mental overhead.

Lisps (with a minor exception for clojure) and Haskell are just not those languages.

Which, again, is why all of those languages produced very little software worth of mentioning for decades.

replies(5): >>40218462 #>>40219416 #>>40219972 #>>40221301 #>>40230977 #
27. fiddlerwoaroof ◴[] No.40218462{4}[source]
And this is just not true: I’ve worked on large lisp programs in various situations with minimal documentation and done just fine.
replies(1): >>40223479 #
28. nathanmarz ◴[] No.40218473[source]
Indeed, we're in private beta and aren't publicizing much about what we're doing. We'll eventually be releasing many case studies on how our private beta users are using Rama.
29. mintplant ◴[] No.40218656{4}[source]
Any examples of the Clojure version?
replies(1): >>40218734 #
30. nathanmarz ◴[] No.40218734{5}[source]
All the examples in rama-demo-gallery have both Java and Clojure versions, including tests. There's also the introductory blog post for the Clojure API which builds a highly scalable auction application with timed listings, bids, and notifications in 100 LOC.

https://blog.redplanetlabs.com/2023/10/11/introducing-ramas-...

31. undershirt ◴[] No.40218779{3}[source]
I know our engineering discipline is in shambles, but there are probably better ways to argue against hype without ourselves using hyperbole.
replies(2): >>40218989 #>>40219161 #
32. smackeyacky ◴[] No.40218913[source]
Not even a code sample in the article. You'd think if they were so convinced it was a new paradigm we'd see why. Makes me skeptical.
replies(1): >>40218939 #
33. nathanmarz ◴[] No.40218939{3}[source]
It's an article about Clojure's influence on Rama, not an introductory tutorial on Rama. But we have plenty of code samples elsewhere:

https://github.com/redplanetlabs/rama-demo-gallery

https://github.com/redplanetlabs/twitter-scale-mastodon

https://blog.redplanetlabs.com/2023/10/11/introducing-ramas-...

https://redplanetlabs.com/docs/~/tutorial1.html

34. yayitswei ◴[] No.40218948[source]
Are you a lisper?

The article is mostly about the power of a lisp dialect. It's kind of "in the tradition" of lisp to write about it in glowing terms. I myself was inspired to learn a lisp after reading several of these types of essays.

replies(1): >>40219146 #
35. hu3 ◴[] No.40218989{4}[source]
Closed source is enough reason in my book.
36. chii ◴[] No.40219146{3}[source]
the real question/point is whether it delivers.

It's just that there's a lot of empirical evidence that these grandiose praise is just praise, but not a lot of shipped software, compared to the 'worse is better' languages such as php, javascript or c.

However, this might be due to the fact that in order to write something in lisp, the author has to be pretty clever, but in order to crap out something in php, you don't need very much cleverness and just need grit/effort. And there are many more people who are not clever, but has grit and effort.

replies(2): >>40219284 #>>40219482 #
37. cactusfrog ◴[] No.40219161{4}[source]
I don’t believe I’m exaggerating. You can replace “Clojure” with “Jesus” in the linked article and it still makes sense.
replies(1): >>40224686 #
38. bachmeier ◴[] No.40219284{4}[source]
> not a lot of shipped software, compared to the 'worse is better' languages such as php, javascript or c

Quantity of "shipped software" depends on many factors. Quality of the language is pretty far down the list. Take Javascript. It's usage numbers might have something to do with it being available in every browser on the planet.

replies(1): >>40219698 #
39. jimbokun ◴[] No.40219416{4}[source]
Scala???

The language that never met an abstraction it didn’t immediately incorporate into itself?

40. asa400 ◴[] No.40219482{4}[source]
The greatest trick the devil ever pulled was convincing people that Clojure is not a practical, get-shit-done language.

For obvious reasons (syntax) Clojure gets lumped in with the other lisps but Clojure is really intensely practical. It makes a number of choices to that effect. The most of important of which is being a JVM language, so you get access to basically all Java code ever written. The builtin collections are very high quality. It's incredibly stable, so the code you write just keeps working regardless of whatever new features they add in the newest version of the language. There are a lot of high-quality libraries that are "done". The immutable-by-default thing makes writing concurrent code much, much easier. Being on the JVM means you don't have to fuss around with cross-compilation. It's fast enough that you rarely need to mess with optimizing it until you reach real scale. I could go on.

I don't even do much Clojure anymore, but when I did, it was hands down the best thing I ever used for work where the main tasks involved moving lots of data around, filtering it, reducing it, etc. Of course Clojure does tend to attract a lot of clever people, but it also attracts a lot of people looking for the tool with the most leverage to get their work done. There is a lot of Clojure out there, just quietly running the back offices of small/medium sized businesses.

41. chii ◴[] No.40219698{5}[source]
> It's usage numbers might have something to do with it being available in every browser on the planet.

but clojurescript is available, so if clojure is truly as superior as javascript, it would make a lot of sense to use this. And indeed there are apps that do, but overwhelmingly more apps just use plain javascript. But when typescript came along, a lot of people switched to it. So it cannot be just merely compiler/build friction imho.

42. blackeyeblitzar ◴[] No.40219875[source]
It seems really distasteful to take the name of an important religious and cultural figure from a different country and appropriate it for some pet project.

https://en.wikipedia.org/wiki/Rama

replies(3): >>40220329 #>>40220432 #>>40221151 #
43. fulafel ◴[] No.40219972{4}[source]
There's a place for languages that are the COBOL of their niche, yes. Depending on how you look at it, they are DSLs too.

Javascript in the browser is actually an interesting case here. (And after Javascript spralwed out... ClojureScript is the nicest way to write React apps)

44. labrador ◴[] No.40220329[source]
Except it has other meanings, not necessarily the Supreme Being. From the link you shared:

Rāma is a Vedic Sanskrit word with two contextual meanings. In one context, as found in Atharva Veda, as stated by Monier Monier-Williams, it means "dark, dark-colored, black" and is related to the term ratri, which means night. In another context in other Vedic texts, the word means "pleasing, delightful, charming, beautiful, lovely"

replies(1): >>40220405 #
45. HexDecOctBin ◴[] No.40220405{3}[source]
And neither of these meanings are relevant to the project, nor have these meanings been widespread for at least last 2000 years.
replies(2): >>40220459 #>>40220631 #
46. nathanmarz ◴[] No.40220432[source]
It's named after the Arthur C. Clarke book.
47. kaba0 ◴[] No.40220459{4}[source]
It’s also the concatenation of two, extremely common syllables, so purely by chance one is ought to hit them. Like, where I’m from its the name of a margarine brand - is it also misappropriating?
48. lispm ◴[] No.40220555[source]
> Everybody implementing their abstractions, every library implementing their own language

In Lisp one can extend the language syntax. One does not need to implement a new language. For example the Common Lisp Object System adds operators like DEFCLASS, DEFMETHOD, DEFGENERIC, ... in addition to already existing operators like DEFUN, DEFSTRUCT, DEFTYPE, DEFPARAMETER, ...

Thus the language can be incrementally extended, instead of using a completely new language.

The CLOS macros are used by many programmers, they were standardized, documented and implemented.

As every form of abstraction, syntactic abstraction needs to be learned and requires extra work. Lisp was from the start developed to enable such things, and its early form of that applied to Lisp itself were the Lisp interpreter evaluating s-expressions, FEXPRs (procedured receiving unevaluated arguments) and in 1962 macros.

> I feel like Lisp and Haskell attract people that love programming more than shipping code.

One of the purposes of Lisp was to implement new ideas: like computing with mathematical formulas (-> Macsyma and earlier attempts), computing theorems (-> ACL2 and earlier attempts), ... This ability to support experimentation in R&D (actors, rule-based systems, frame systems, ...) was always a part of the language community.

If we look at the surviving commercial systems (Allegro CL and LispWorks), they still support this feature set.

Clojure was developed as a Lisp-inspired functional language with deep Java/JVM integration to support enterprise programming for people who were tired of programming in Java. That's fine. But the advice then was to not utilize the full power of Lisp (syntactic abstractions), to address the fear of unmaintainable software, while at the same time not using various features of Lisp (like gradually typed implementations of Lisp like SBCL) which helps to write robust software.

Generally Lisp has a broader outlook. It ran on an experimental spacecraft, it powered autonomous robots inspecting pipelines, it was the base for early research in computing (-> Interlisp), it ran on calculators (HP RPL), it supported children education (Logo), it's used to schedule telescope operations (-> Hubble and James Webb), it is used to schedule airline/airport operations, ...

> php has more killer software than all those languages combined.

If we research for ground breaking software, then I bet over the long history of Lisp there were a lot more in many more diverse domains written in Lisp

Lisp has been applied to develop airplane parts. BOEING and Airbus used to be Lisp users (they might be still use it for older planes). ICAD was the first parametric CAD system. ICAD used macros to describe physical objects and their relationships. This was used to construct turbines, wings, and a lot of other parts of Airplanes.

If you look into the long history of Lisp, it has been successfully applied in domains PHP has never seen. Sometimes really crazy stuff, like the first virtual military troop training systems, where the US army deployed a few extensive training and simulation systems, where the virtual worlds were controlled & generated by a Lisp system and rendered by multiple graphics engines for each training simulator. In the early 80s. -> https://en.wikipedia.org/wiki/SIMNET

That's nothing like PHP, but it was ground breaking in its domain. PHP had a different purpose: it was developed to make it simple to write&generate web pages in a large scale. That's a huge domain, but that was not what Lisp was developed for.

Btw., we see a bunch of new languages which now also support some form of macros. A recent example is Rust.

49. labrador ◴[] No.40220631{4}[source]
Why do they have to be widespread?
50. kitd ◴[] No.40220990[source]
Tbf, the purpose of the blog is to talk about the power of Clojure/Lisp for defining the new paradigm, rather than the paradigm itself. Though the author then goes on to talk about "fragments" as the basis for the new paradigm.

The first sentence has a link to the project page which has most of the info you need.

51. mrkeen ◴[] No.40221006[source]
> Another example is Specter. Specter is a generically useful library for querying and manipulating data structures

> https://github.com/redplanetlabs/specter/tree/master/src

> MutableCell.Java. 8 years ago

  package com.rpl.specter;

  public class MutableCell {
    private Object o;

    public MutableCell(Object o) {
      this.o = o;
    }

    public Object get() {
      return o;
    }

    public void set(Object o) {
      this.o = o;
    }
  }
Behold the power!
replies(2): >>40221045 #>>40221142 #
52. ◴[] No.40221045[source]
53. thih9 ◴[] No.40221142[source]
Simple and elegant, powerful indeed.

Or did you mean something else? In which case please elaborate.

54. as1mov ◴[] No.40221151[source]
A genuine question, why is that a bad thing? The worst thing that could happen is someone would get curious about the word and try to learn more about it, consequently reading about Hindu mythology.

There's tons of material in Hinduism + Buddhism would be amazing if adapted in books/movies/shows/games, but it hasn't happened because everyone seems to be so touchy about it (despite the fact that the religion itself doesn't have a singular book, god or commandments specifying what's good/bad).

Also before the usual retort comes back, my family is Hindu.

55. defyonce ◴[] No.40221174[source]
> I feel like Lisp and Haskell attract people that love programming more than shipping code.

this! but I find Clojure incredibly pragmatic, we grow our codebase, ship things, just the line of business work with Postgres/Clojure and Rum(React) on frontend.

We do it with super small team, where one person owns the entire sub system

replies(1): >>40221238 #
56. refset ◴[] No.40221238{3}[source]
This is how I see things also. Clojure is extremely practical and naturally attracts people that want to ship products.

The "Figma OSS Alternative" post that's also on the HN homepage right now doesn't mention Clojure anywhere (no comments about it either!), but Penpot is clearly also yet another app successfully shipped using Clojure: https://github.com/penpot/penpot

57. tome ◴[] No.40221301{4}[source]
That's interesting, because to hit all those points I'd prefer Haskell! I've never found another language where it's so easy to jump into an unfamiliar codebase, or to come back to code I wrote years ago and get started again immediately. By contrast, I don't think I could read idiomatic Java without requiring an IDE to help me navigate.
58. throwaway_fjmr ◴[] No.40221359[source]
I worked on a few OSGi projects in the early 2000s. Rama and their claims trigger funny vibes in me, OSGi meets K8s meets Clojure cult. I'm looking forward to future releases, though.
59. sokoloff ◴[] No.40221372{3}[source]
Maybe they could call their new Clojure-based bank Nubank.
replies(1): >>40222134 #
60. JonChesterfield ◴[] No.40222095[source]
Fragment sounds like actor to me. Stateful thing that sends messages to other fragments. Not convinced that's a generalisation of a function.
replies(1): >>40224851 #
61. erichocean ◴[] No.40222134{4}[source]
Obv. Unicorn potential.
62. jabradoodle ◴[] No.40223435{3}[source]
N=1, I work with many pragmatic clojure devs who just want to ship working software.
63. epolanski ◴[] No.40223479{5}[source]
That's not a strong argument.

That's like saying world hunger does not exist because you had lasagna for dinner.

replies(1): >>40227639 #
64. samsquire ◴[] No.40224102[source]
From just thinking about the architecture of Rama I feel it would scale very well.

Data parallelism and partitioning and sharding is a very effective scaling technique.

Nathan, I would appreciate writings about the mental model of mapping software to your mental model of implementing behaviours in the streaming data approach because it is a different paradigm.

I can't read the DSL yet and know what is going on!

replies(1): >>40224828 #
65. gorjusborg ◴[] No.40224686{5}[source]
Clojure is not special in that it has some zealots.

It's easier to call others out when they aren't in the mainstream, but I'd say that there are way more mainstream cult members than these niche communities. For instance, HN itself can feel a bit cult-like. The greater tech culture feels similarly.

66. nathanmarz ◴[] No.40224828[source]
The best documentation on the mental model of using Rama is the last page of the tutorial, linked below. However, I would recommend going through the whole tutorial rather than starting there.

https://redplanetlabs.com/docs/~/tutorial6.html

67. nathanmarz ◴[] No.40224851[source]
Fragments have nothing to do with actors. Check out the doc on the dataflow language and you'll clearly see it's a generalization of a function.

https://redplanetlabs.com/docs/~/clj-dataflow-lang.html

68. lispisok ◴[] No.40225084{3}[source]
You just generalized an entire community based on one person. I can add a counter anecdote to your N=1. I'm a Clojure dev. I've used and enjoyed Datomic. Postgres is still my goto database.
69. lgrapenthin ◴[] No.40226474{3}[source]
There are no huge flaws with Datomic.
70. joeevans1000 ◴[] No.40227301[source]
This is... closed source?

Omg. Didn't anyone learn anything from the Datomic story?

replies(1): >>40230179 #
71. fiddlerwoaroof ◴[] No.40227639{6}[source]
How about the existence of major pieces of software written in Common Lisp? For example, American Express fraud detection was and maybe still is done by a CL program. Google Flights uses ITA Software’s CL flight search system. Emacs is widely used and contains a lot of lisp.

I think basically no languages have failed or succeeded for technical reasons: generally, marketing and inertia explains the tech stack better than DX or theoretical superiority.

72. thih9 ◴[] No.40230179{3}[source]
What do you mean?
73. thih9 ◴[] No.40230264[source]
Rama desperately needs a better landing page and clearer docs.
74. kazinator ◴[] No.40230977{4}[source]
Of all things, did you just lob an accusation of ambiguity at Lisp?