Robert Stuttaford will be giving a keynote at Clojure Remote 2017. He will be speaking about Datomic.
PurelyFunctional.tv: How did you get into Clojure?
Robert Stuttaford: Our startup had a proven prototype in Adobe AIR/Flex (remember that?) and PHP+MySQL. I desperately needed a language that I could build scalable systems with, but with a tiny team, and with a high degree of variability in our requirements; we were a truly scrappy startup. We had to move fast, and we had to be able to tack back and forth as we found our way into a long-term, sustainable business.
I had been dithering on committing to a Rails or Node.js backend for months, because it just did not feel right; it'd have ended up being another massive monolith codebase just as hard to reason about as the PHP one before it.
When I had essentially rebuilt the core of this app with ClojureScript 3 weeks later, I was absolutely hooked, and my mind was on fire. I had found my new home! So thanks to Chas Emerick, Brian Carper, and Christophe Grand, the authors of that book, and also to David Nolen, who was instrumental in smoothing the way for me back then.
It worked. We're still here. After 4 years of effort by easily 20 people, we have only 66k lines of production Clojure and ClojureScript, and we have a Going Concern! 2017 is going to be our best year ever.
PF.tv: What is your talk about?
RS: Datomic! A quick overview of the fundamental data model, and then some hard won lessons from 4 years of working with Datomic at Cognician.
We have built a lot of different things with Clojure and Datomic, now, and we have a lot of different patterns of use to compare and contrast. Some fun stats:
- First transaction is on Jan 15, 2013. Our custom data partition, naturally!
- Nearly 700 schema attributes, of which ±160 are deprecated.
- 174,911,525 unique datoms total across two databases.
- 49,606,737 transactions (for an an average of 7ish datoms a transaction).
- When we started, there was no pull facility, lookup refs, log traversal, excision, schema alteration, and Datalog had less than half of its current API. I can't imagine working without these, now.
You tend to Learn Things when you have so much technical debt in your database and programs to contend with. I hope to share some of those learnings.
PF.tv: Who is your talk for?
RS: Anyone who's using — or keen to start using — Datomic. I hope to make their journey with it a little smoother, and especially help folks to plan for the long term.
PF.tv: What do you hope people will take away from the talk?
RS: I believe an understanding of the fundamental data model unlocks a lot of power. If you stay in the higher-level constructs (like Datalog and entity / pull maps), you can miss things that can make your life a lot easier.
Also, with an immutable database, mistakes stick around for a lot longer! It's important to think through the long term consequences of your data-modelling decisions.
PF.tv: What concepts do you recommend people be familiar with to maximize their experience with the talk?
RS: I don't plan to cover the very basics of what Datomic is — it'd be good for you to have seen a talk by Rich Hickey or Stuart Halloway on the topic, or have read an overview of the system.
PF.tv: What resources are available for people who want to study up before the talk?
- Datomic Training Sessions by Stuart Halloway. Foundational.
- Learn Datalog Today is great to get your feet wet with Datalog.
- Datomic Videos has PLENTY.
- Clojure Cookbook Datomic Chapter recipes 6-10 through 6-15 to get started from the very beginning.
PF.tv: Where can people follow you online?
PF.tv: Are there any projects you'd like people to be aware of? How can people help out?
- Datascript is also great, and I highly recommend checking it out.
- Learn Datalog Today could quite honestly do with an update; I am sure Jonas Enlund would appreciate a hand! Dive in on GitHub.
PF.tv: Where do you see the state of Clojure in 10 years?
RS: I see Clojure everywhere. I see the tooling being amazing (it already is, but even more amazing). I see Clojure Spec being a cornerstone of how we write Clojure programs. I see Datomic being open source. Well… ok, I admit that last one is a wish 🙂
PF.tv: If Clojure were an animal, what animal would it be?
RS: Ants or bees, maybe? Very simple by themselves, but when you have a whole bunch of them together, wow. Such incredible complexity, that actually works!