142 upvotes, and 0 downvotes -- says a lot about what a great video this is. Seeing your workflow alone was just as nice to see as the info about datomic itself. You could easily substitute a SQL/NoSql database into this video and still have a very educational piece of content that everyone in the community can benefit from. Thanks!
Great Tutorial! This was a life saver. Heads up for people watching this in the far future with me, the schema have changed quite a bit since this video has been made, so you will want to look up proper syntax to avoid errors
This was a very helpful video. I really liked the way you took us through all of the parts, even though the scenario was not complicated. I thought it was useful to see how all of the different parts came together.
Thanks for the feedback. I agree with you that I didn't manage to show many of Datomic's advantages during the live-coding part of the screencast. So it's definitely something I'll think about if I revisit Datomic in the future.
That was really cool. There are very few good walkthroughs for clojure, and especially datomic.. but that was amazing. I really enjoyed your development environment as well!
Thanks for this - very helpful and clear. Drives home the ease of testing with the Datomic/Clojure combination. Compared to the hoops you have to jump through in the RDBMS world this is pretty striking...
Thanks! Light Table and Clojure are a great match, though I'm especially excited to see how plugins (hopefully coming in Light Table 0.6.x) will take it to the next level as an IDE.
Best video I've seen so far about how to get started with Datomic. Enjoyed your TDD workflow using LightTable. May I ask you what command you use in LightTable for code formatting.
Well done instruction. I am learning clojure, light table & datomic all at the same time...so imagine how helpful this is. I have experience developing data warehouses in Oracle and I can see how this would be much more effective - having append-only and time stamping as a native feature of the dbms. Also - it was easy to pick up datalog having previously written sparql. Is there a role for RDF/OWL in all this?
Thanks, I'm glad you found the video useful. I don't have any experience with RDF or OWL, but from what I just read they do seem similar to Datomic's datoms and schemas - in that both approaches let you model data and relationships with tuples.
Thanks for the great tutorial! Not only did it help with learning Datomic, it was also a nice introduction to LightTable and test driven development with Expectations. Only one criticism: If Ringo Starr goes through the tutorial, he will likely feel slighted, or maybe he just doesn't have any pets :-)
Could you make a new version for this video? I believe a lot has changed in the past few years and a lot of new cool stuff to look at. Anyway great video!
Hey Misophistful , I followed along with your tutorial and posted the source code here: github.com/dillonforrest/clojure-datomic-tutorial-code Thanks again!
Very well done. Keep making more! I wish you'd shown off at least some bit about the time element. You briefly talked about it, but you didn't actually show any advantage to Datomic. Your demo would have been about the same if that had been MySQL or Postgres, differing mostly in the use of SQL rather than Datalog. In fact, it was quite a bit more cumbersome than if that had been a NoSQL store like Redis or CouchDB. I'd love to see a follow up where you show some real benefits from Datomic.
During your example, is there any Datomic server runing? I could not geti it. In Datomic official page and examples, it tells us to run a Transactor first. If we want to use de datomic.api/create-database with a mem type, we must run a local Transactor (docs.datomic.com/on-prem/dev-setup.html) first, and, if we want to use a peer server, we must use datomic.client.api to connect to it and create-database (and also delete) does not work since we define the database during the bin/run call. Please, can anyone help me with this? I'm really confused...
You're right that there's no Datomic server running during my TDD session. Instead I used the `with-redefs` trick to "inject" the in-memory version of Datomic into each test. You can some read documentation about the in-memory version of Datomic here: docs.datomic.com/on-prem/peer-getting-started.html
I think I wasn't clear enough. I'm sorry. My question was about the "running instance" of the database. I thought that the only way to run a "datomic instance", even in-memory, would be through the bin/run command, but the required API (datomic.api, which is a Peer Library, not the Client one) can do it by itself, what makes sense since it's in-memory. Took me a while to realize it, but thank you a lot! Your tutorials are amazing!
Good intro to Datomic, but for future casts please consider leaving out all the fluff. This video could have conveyed the same Datomic info in 20 minutes, if you had left out the testing, which is superflous on such a small experiment, and the lenghty comments which only make sense if you plan to revisit the code after 6 months, which I doubt you will. But thanks a lot, A for effort :)
+Lau Jensen upvoted your comment cuz I couldn't continue after he did that autoexpect stuff wish he just dove right into datomic, but overall pretty good screencast. Disclaimer: Strongly advocate against using TDD because it adds too much cognitive load on developers for ephemeral gain that falls to zero when time passes or requirements change but thats just me haha.
Thanks for the amazing video
142 upvotes, and 0 downvotes -- says a lot about what a great video this is. Seeing your workflow alone was just as nice to see as the info about datomic itself. You could easily substitute a SQL/NoSql database into this video and still have a very educational piece of content that everyone in the community can benefit from. Thanks!
+Josh Jones Thank you for your kind comment, and I'm very glad you found the video useful.
Great Tutorial! This was a life saver. Heads up for people watching this in the far future with me, the schema have changed quite a bit since this video has been made, so you will want to look up proper syntax to avoid errors
Hi Jacob, thank you for your kind comment, and I'm very glad to hear that this video still has at least some value, even after all these years!
Thank you for this amazing video! What a wonderful resource, and I absolutely loved your incorporation of the TDD style. Keep up the amazing work!!!
I'm glad you enjoyed the video.
Use SHIFT+TAB to format the selected code block in Light Table.
Thanks for the comment, and I'm glad that you found the video useful.
This was a very helpful video. I really liked the way you took us through all of the parts, even though the scenario was not complicated. I thought it was useful to see how all of the different parts came together.
Thanks for your comment, and I'm very glad you found the video helpful.
Thanks for the feedback. I agree with you that I didn't manage to show many of Datomic's advantages during the live-coding part of the screencast. So it's definitely something I'll think about if I revisit Datomic in the future.
That was really cool. There are very few good walkthroughs for clojure, and especially datomic.. but that was amazing. I really enjoyed your development environment as well!
Thanks a lot for this video, it's really clear and instructive for those of us getting started with Datomic.
You're very welcome.
Thanks for this - very helpful and clear. Drives home the ease of testing with the Datomic/Clojure combination. Compared to the hoops you have to jump through in the RDBMS world this is pretty striking...
Thanks!
Light Table and Clojure are a great match, though I'm especially excited to see how plugins (hopefully coming in Light Table 0.6.x) will take it to the next level as an IDE.
Great tutorial, also learned alot about lein and Lighttable
Very helpful. Well explained concepts and a useful template.
Really great video. Congratz!
Best video I've seen so far about how to get started with Datomic. Enjoyed your TDD workflow using LightTable.
May I ask you what command you use in LightTable for code formatting.
Many thanks, best tutorial out there
Well done instruction. I am learning clojure, light table & datomic all at the same time...so imagine how helpful this is. I have experience developing data warehouses in Oracle and I can see how this would be much more effective - having append-only and time stamping as a native feature of the dbms. Also - it was easy to pick up datalog having previously written sparql. Is there a role for RDF/OWL in all this?
Thanks, I'm glad you found the video useful.
I don't have any experience with RDF or OWL, but from what I just read they do seem similar to Datomic's datoms and schemas - in that both approaches let you model data and relationships with tuples.
Thanks for the great tutorial! Not only did it help with learning Datomic, it was also a nice introduction to LightTable and test driven development with Expectations. Only one criticism: If Ringo Starr goes through the tutorial, he will likely feel slighted, or maybe he just doesn't have any pets :-)
***** Thanks for the comment, and I'm glad you found the tutorial useful.
For the sake of Ringo's ego, I hope he never finds this video. ;-)
Brilliant tutorial!!! I really enjoyed this!
Could you make a new version for this video? I believe a lot has changed in the past few years and a lot of new cool stuff to look at. Anyway great video!
Amazing video! Very insightful :)
Super helpful! Thank you!
Hey Misophistful , I followed along with your tutorial and posted the source code here: github.com/dillonforrest/clojure-datomic-tutorial-code
Thanks again!
Thanks, that's awesome! :)
Very well done. Keep making more!
I wish you'd shown off at least some bit about the time element. You briefly talked about it, but you didn't actually show any advantage to Datomic. Your demo would have been about the same if that had been MySQL or Postgres, differing mostly in the use of SQL rather than Datalog. In fact, it was quite a bit more cumbersome than if that had been a NoSQL store like Redis or CouchDB.
I'd love to see a follow up where you show some real benefits from Datomic.
Thank you :) Enjoyed a lot.
Great tutorial, thank you!
Great stuff! Thanks a lot!
Great! Thank you.
Thank You!
Is your project's code hosted somewhere? Maybe on GIthub? Thanks!
Dyego Rodrigo Take a look at one of Dillon Forrest's comment below. He transcribed the code into a GitHub project. :)
@@Misophistful Thanks! I didn't see that you answered me :)
Thanks!
During your example, is there any Datomic server runing? I could not geti it. In Datomic official page and examples, it tells us to run a Transactor first.
If we want to use de datomic.api/create-database with a mem type, we must run a local Transactor (docs.datomic.com/on-prem/dev-setup.html) first, and, if we want to use a peer server, we must use datomic.client.api to connect to it and create-database (and also delete) does not work since we define the database during the bin/run call.
Please, can anyone help me with this? I'm really confused...
You're right that there's no Datomic server running during my TDD session. Instead I used the `with-redefs` trick to "inject" the in-memory version of Datomic into each test. You can some read documentation about the in-memory version of Datomic here: docs.datomic.com/on-prem/peer-getting-started.html
I think I wasn't clear enough. I'm sorry. My question was about the "running instance" of the database. I thought that the only way to run a "datomic instance", even in-memory, would be through the bin/run command, but the required API (datomic.api, which is a Peer Library, not the Client one) can do it by itself, what makes sense since it's in-memory. Took me a while to realize it, but thank you a lot! Your tutorials are amazing!
brilliant. Would have been perfect if you'd used emacs and nrepl :)
Thanks and :)
Good intro to Datomic, but for future casts please consider leaving out all the fluff. This video could have conveyed the same Datomic info in 20 minutes, if you had left out the testing, which is superflous on such a small experiment, and the lenghty comments which only make sense if you plan to revisit the code after 6 months, which I doubt you will. But thanks a lot, A for effort :)
+Lau Jensen upvoted your comment cuz I couldn't continue after he did that autoexpect stuff wish he just dove right into datomic, but overall pretty good screencast. Disclaimer: Strongly advocate against using TDD because it adds too much cognitive load on developers for ephemeral gain that falls to zero when time passes or requirements change but thats just me haha.
Great tutorial, thanks a lot!