336 karma · joined March 5, 2010
Pretty much anywhere where the jvm is a good fit, but given it’s a hosted language you can also use it to emit dart code or js and find it running on shoulders of others (like jank, llvm based dialect, or babashka)
The "closest" to datomic is datahike right now. Crux/datahike/datascript/asami all use datalog in some way or another but they cover different use cases.
Communication "style" and slow pace is frustrating sometimes but that's a small price to pay for all the positive facets of the language/community. I used to be more critical of these but I don't care anymore, the community is wonderful, the language is very usable and thriving, that's what matters ultimately.
About Datomic, I still don't get why there's no push to open-source the on-prem version, especially since nubank acquisition. I dug onto the internals a few times, contributed to some of the alternatives, read/viewed pretty much everything about it and used it for fun in toy projects, and that thing is just so versatile it makes me angry it's not more accessible and as a result not more popular. It has an incredible untapped potential. Every conj I am holding my breath hoping for a "one more thing" announcement where they'd do just that. The "alternatives" do things either quite differently on too many aspects or lack traction.
The only thing swedes do right in trains is that they are very civil, make it easy for bikes, strollers and old people to use them, but that's about it.
* monster gating. Opening a gate (portal) would allow people to travel from one place in the world to another by crossing that portal. The thing is, that also worked for NPE/monsters. So we would go to the craziest dongeons, run around to get the attention of hordes of monsters, open a gate in a tight spot and have this whole group of monster reach some place where they should never be seen. Imagine dragons, Liches & whatnot at the edge of a beginner's town for instance or worse, inside somebody's house :).
* stealing stuff from somebody in the middle of combat/duel, magic required reagents to perform spells, steal regents = win, finish the player with your bare fists.
The combat system in the early days also benefited from bugs that made it nothing short of a dance, it required to be very good at timing and sparked some complex strategies to win (spell interuption, spell pre-casting, weapon hit timing in between spells, etc etc). You could also "pretend" you were casting a specific spell while in fact another one was being invoked. Luck played very little in duels.
It's also the first mmo where team play started to be a big thing, small tight knit group of players using software like Roger Wilco (ancestor to mumble/teamspeak) handling combats against crazy odds.
It was also full of nasty stuff, accounts/houses/gold had a real world value, hacking was very easy back then and rampant.
I could go on and on about stories about Ultima, it was an incredible game at a time where massive multiplayer gaming was being defined. It had me learn how to program, learn the english language, build websites and much more.
p.s. I used to play on Chesapeake, with various guilds (WWW, AdJ, Oinland etc) if anyone from these days is around :)
Paired with use-package it makes emacs configs very compact, typically you can have a single conf file + the versions file for everything related to ones setup. That makes it very easy to transport.
Even if you use nix/guix it's more convenient imho to use straight.el for emacs, as it's standalone as long as emacs is available.
That said many things are great: administration, school for small children, parental leave, housing is still quite cheap.
And some are just odd, like the healthcare system (lots of gatekeeping, slow, so so quality).
At this point we want to leave Sweden, it's not making it for us.
I am swiss, lived there for most of my life but I also lived in France (south and Lyon) and in the UK. I also work remote for a swiss company (have been working remote for the past 15 years).
There's also Exoscale using clojure(script) extensively. Funding Circle and CircleCI also use it but I think "only" on the backend.
There are many successful stories of proprietary dbs and also a number open sources ones in terms of profitability, ex: Elastic, Datastax, Confluent, Citus etc etc...
Personally I wished it was open-source, it looks quite capable but there is too much risk involved for me to be confortable using it, not to mention it's quite pricey. 1$/day is for dev setups, prod cloud setups start around 4-5k/year last time I read about it, it might be fine for a single deploy backing your service, not when that's a cost you have to add to every client.
Another thing is that it is very specific to some uses and has some limitations (subjectively) that will often require to pair it with other solutions to be actually usable for some things (ex: strings are limited to 4096 characters, no bytes type). All in all it makes sense given what you should use it for (and not use it for), but that's not your usual db product and sometimes I have the feeling that it's advertised as a potential drop-in replacement for <insert favorite relational db> when it's quite often not by itself (arguably, apples vs oranges).
There are also a number interesting of projects that got inspired by it in one way or another, but nothing directly comparable:
* datahike (and the upcoming datopia.io)
* datascript
That said datalog is a pleasure to use and datomic looks fantastic it's just not for everybody.
So yeah, blazing fast, with a decent macro system and fixing some of the odd corners of Lua at compile time. It's really a great little thing (it's 2k lines of lua, so super easy to embed/ship too).
I was not thinking about these two, nor was I thinking about a patch for boot/lein.
That said the slow startup issue is only really valid for cli apps (and maybe CI), if your dev workflow relies on re-starting your repl all the time, it's a broken workflow.
The fact you can download and build it doesn't mean much in general tho.
With tools.deps and the need of some companies for more advanced build setup a lot of people are actually thinking about these issues.
That said there's a lot of FUD around Oracle ownership nowadays but most of it is moot since OpenJDK is the fundation of Oracle's Java.
Performance can vary quite a lot from task to task, also compile times suffer a lot and you lose some dynamic features.
So from what I understand it might be useful for clojure cli apps, but at this point I am not sure it brings a lot, but this is early days.
The cool part is the polyglot capabilities imho.
Then there's the elephant in the room: the licensing and potential changes in the long run.
For clojure if you want decent cli/startup experience there's always cljs, lumo or you can go with something like fennel-lang, a clojure looking lisp that "transpiles" to lua(jit), so 0 overhead compared to lua and super fast startup.
It's used in a rule engine for cases where the user needs an escape hatch to express super context specific rules we do not provide matchers for out of the box.
I think "Lua inspired" instead of "based" would be more accurate.
I have been quite happy with luaj for "end-user" scripting on a clojure app we develop. While it requires to know a bit about lua internals it's quite easy to use. Also just using Lua (plus some bundled fns) buys us a lot of stuff for free (libs, docs, tutorials etc).
I guess an advantage of eden could be portability (cljs), but it's not something that matters to me.
But for one of the calls (checking a whole password against what's stored), which probably accounts for most of the usage of the API, a bloom filter seems like a perfect fit.
Just send a hash from the client and have the bloom filter built offline with the sames hashes, no big deal. You'd never ask clients to download it.