I think they've improved a lot WRT fixing problems--we had a chat with them after some issues with Datomic in production, and since then (6 months ago) we've had every problem we've discovered get fixed very promptly, and Datomic's continued to scale for us.
I lived in a building where one of the tenants full-time rented out their unit on AirBnB. The "guests" would tag the elevator, make noise, and trash the hallways. Also, it felt very unsafe when a large group of 4-8 people would be crammed into a 1br apartment, and they'd be drunkenly stumbling through the otherwise quiet building.
Another problem is that even if you report that tenant, if they figure out who reported them, they may take revenge before they're evicted, since eviction proceedings take so long.
They're based on Raft--that's not a consensus protocol that's designed for multi-datacenter operations. I suspect you'll have reliability and throughput issues fairly quickly, just as you see with multi-datacenter zookeeper.
The solution Google uses for this kind of problem: multidatacenter transactions are rare, so they're not optimized for latency (instead for reliability), and they tend to use 2PC, as it's easier to get right with unpredictable WAN latencies.
I think that this article shows a very interesting application of a technique known as “derandomization”. Usually, derandomization is when you take a randomized algorithm and remove all sources of randomness. In this application, we see it only partially derandomized, to great effect: copysets improve reliability by reducing overall randomness, but still leverage randomness to approximate the solution to an NP-complete problem.
I wonder if other algorithms would benefit from partial derandomization?
Another interesting solution is to use a functional database, like Datomic. Since the database looks like a giant timeseries, you have an implicit versioning built into the database.
If OpenSCAD isn't powerful enough for you, there's a Clojure wrapper that lets you leverage Clojure to generate SCAD code: https://github.com/farrellm/scad-clj. OpenSCAD automatically re-renders the model when the file changes on disk, so you can essentially have a 3D modeling REPL with this setup.
> OpenSCAD automatically re-renders the model when the file changes on disk, so you can essentially have a 3D modeling REPL with this setup.
I love this feature of OpenSCAD. I've tried 3d modeling tools in the past, they just don't work for me. But code, I can do that. With a Mac Mini hooked up to my TV (primarily for watching videos, listening to music) I ssh into it and edit the files with emacs, and every save I get an updated view. I need to take a look at this clojure wrapper, however. I'm not hugely familiar with clojure, but CL and scheme I've got so it shouldn't take me long.
I have been working on this problem as well, by writing a system that allows you to compile Clojure to FPGAs. I'll be giving a talk on it at Clojure West: http://clojurewest.org/sessions#greenberg