Live data from Hacker News

Datomic is Free

blog.datomic.com

331–340 of 436 posts

Re: Datomic is Free

#331
post #252

Earlier quoted context omitted.

Eh, it's Java bytecode and it's Apache 2. So you can patch Datomic and extend it without breaking the license.

I wonder if public benchmarks are now allowed with the binaries.

Somebody asked about the Dewitt Clause in the Slack, and got crickets.

Re: Datomic is Free

#332

What is the benefit of having it closed source? My view is that Datomic is a novel upstart in the persistence space. Most of their competition - Postgres, Mongo, Cassandra - is open-source, so they're just shooting themselves in the foot. The "pay us extra for convenient hosting and consulting" model isn't threatened by open-source in the slightest. The only thing I can think of is that they're trying to compete with…

I suspect they don’t want to deal with pull requests from people they didn’t hire.

Heh. Even most Cognitects had no access to the Datomic source.

Re: Datomic is Free

#333
post #186

Earlier quoted context omitted.

Datomic Wasm backed by SQLite.

Interesting! What are you using SQLite for? If it's analytics, perhaps DuckDB WASM might be an option?

https://sqlite.org/wasm/doc/trunk/index.md

https://developer.chrome.com/blog/sqlite-wasm-in-the-browser...

Re: Datomic is Free

#334
post #324
post #284

Earlier quoted context omitted.

Yes, this hit home so hard. All objects are bespoke mini languages that add little to no value and simultaneously make it hard to remember and hard to use. Just use maps!

An object is a schema, though. A map is... Whatever you put in it.

This is the benefit. Languages like Clojure have excellent support for manipulating maps and I'd wager that something like 40-60% of Clojure code is similar-looking map manipulation stuff for this very reason.

If you need that validation, you just validate the map? You can use established methods like Malli or Clojure Spec for this. If you need to use a record with a fixed schema, just use a record instead of map. In Clojure, you can use most of the map functions for records too.

Re: Datomic is Free

#335
post #293

Earlier quoted context omitted.

Java records weren't even a gleam in the eye of James Gosling when Clojure was solving these problems at its inception.

Standard ML had records since the '70s. Both Clojure and Java would benefit from taking more from what came before, though Java at least had the excuse of being designed for low-powered set-top boxes.

Clojure has records too.

Re: Datomic is Free

#336

Earlier quoted context omitted.

One thing which is quite hard to do in Datomic is simple pagination on a large sorted dataset, as one can easily do with LIMIT/OFFSET in MySQL for example. There are solutions for some of the cases, but general case is not solved, as far as I remember (it’s been a while I used it extensively)

It depends! If you want to lazily walk data, you can read directly from the index (keep in mind, the index = the data = lives in your app), or use the index-pull API which is a bit more convenient. However, if you want to paginate data that you need to sort first, and the data isn't sorted the way you want in the index, you have to read all of the data first, and then sort it. But this is also what a database server…

Yep, I am well aware of these specifics and workarounds, but in general case where is no general solution to the question asked here, for example [0]. And for big datasets with complex sorting it will take some effort to implement a seemingly simple feature.

Guess it is just one of the tradeoffs, as while some features Datomic has out of the box are hard to replicate in RDBMS-es, things like pagination which are often took for granted is a bit of work to do in Datomic. So it is something to keep in mind when considering the switch

[0] https://forum.datomic.com/t/idiomatic-pagination-using-lates...

Re: Datomic is Free

#337
post #206

Earlier quoted context omitted.

“No real gain” I don’t agree with this. iirc Rack ultimately uses and array to represent HTTP responses. It has three members: the status code, the headers, and the response body. If you’re shipping a new change, is it easier to mistake response[0] or response.headers? This is a trivial example, but the general class (ha) of trade-off is amplified with more complex objects. I love clojure and lisp but the blindness b…

In Clojure, response.headers is still data :) You just use the built-in ways of reading named keys, such as (:headers response) or (get headers :response).

Errata: (get response :headers)

Re: Datomic is Free

#339

Earlier quoted context omitted.

I appreciated this insight into other people's use cases, thank you for that! This architecture brings RethinkDB to mind, which also had some ability to run your client as a cluster node that you alone get to query. (Although there it was more about receiving the live feed than about caching a local working set.)

> which also had some ability to run your client as a cluster node that you alone get to query FoundationDB does this as well.

Do you have a pointer to some doc explaining how to do that in foundationdb ?

Re: Datomic is Free

#340

Earlier quoted context omitted.

>used Clojure fulltime for five years. How did that work out for you? Usually following a hype cycle, there is a negative hype cycle i.e. Mongo is webscale, then Mongo is a buggy mess. Clojure seemed to just fade away. Did it turn out well or are there interesting pitfalls that make it not as great as advertised?

Clojure is just really niche. Even an ecosystem that stays the same size overtime is dwarfed by the continually growing, continually polished competitor ecosystems that will pull people from the small niches. The best things about Clojure are things you don't really appreciate until you've already done the work to learn them. For example, I never would have known how amazing it was to evaluate code inside the editor…

Parinfer is also amazing but easier to get started with.
Post reply on HN