One other point I should have expanded more. Viewing your domain model as a state machine responding to a sequential list of commands allows you to easily isolate time as just another property. I have a [:set-time {:now ….}] which emits a [:time-set {:now …}] which opens the door to so many things. Of course, you can’t ever to a (Date.) anywhere instead you need to check the denormalised time store, but ok. A lot of our domain is about reacting to things over time so now I can start the domain without time changing then issue a [:set-time…] and then inspect the domain and so on. Very very powerful.
> On 15 Jul 2015, at 22:14, Johanna Belanger <johanna.belan...@gmail.com> wrote: > > I am always eager to hear anything and everything about your experience with > this. Especially downsides. =) > > I haven't done ES yet. My hydration code is definitely not that lovely. What > do you think about ES vs Datomic? (Probably not the right thread for that > question, huh?) > > On Sunday, July 12, 2015 at 8:20:54 AM UTC-7, Colin Yates wrote: > My latest project uses a CQRS and event sourcing design and the power it > gives, coupled with Clojure is just fantastic. Hydrating an object becomes > (merge {} (event-store/load ar-id)) - just fantastic. > > I too find a lot of sympathy between CQRS, event sourcing, FRP and Clojure > which I keep meaning to blog about, but my todo list is a mile long. Still, > highly recommend that architecture. Lots of downsides; everything is a trade > off, but conceptually, yeah, it gets a lot right. > >> On 12 Jul 2015, at 05:34, Matt Bailey <ambit...@ <>gmail.com >> <http://gmail.com/>> wrote: >> >> Johanna, >> >> I noticed you mentioned CQRS. In my work, we use CQRS heavily, specifically >> the Axon framework for Java (utilizing Spring and Hibernate). I got into >> Clojure through watching Rich Hickey's talks and figured that any language >> that he wrote had to be good. >> >> It's remarkable to me how cleanly the concepts applied in CQRS map to >> concepts in Clojure. The funny thing is that CQRS would never be necessary >> if it wasn't for languages like C# and Java. >> >> It can be discouraging to see people's eyes glaze over when you talk about >> code as a series of transformations on the input. Many people limit their >> understanding of code to a very procedural style with ifs, elses and "helper >> methods" that have side effects. >> >> Sorry I don't have any words of wisdom on how to evangelize Clojure, but I >> am glad to see someone else noted the parallels between CQRS and a more >> functional style of programming. >> >> Cheers! >> -Matt >> >> On Saturday, July 11, 2015 at 2:47:31 PM UTC-7, Johanna Belanger wrote: >> That's really cool, thanks! >> >> On Saturday, July 11, 2015 at 5:27:37 AM UTC-7, juvenn wrote: >> Hi Johanna, >> >> I don’t know if it'll work for your team, but I find Shaun Le Bron's >> "Interactive guide to Tetris in ClojureScript” the most succinct and >> beautiful way of showing power of Clojure and ClojureScript. >> >> https://github.com/shaunlebron/t3tr0s-slides >> <https://github.com/shaunlebron/t3tr0s-slides> >> >> Have fun! >> -- >> Juvenn Woo >> Sent with Sparrow <http://www.sparrowmailapp.com/?sig> >> >> On Saturday, 11 July, 2015 at 1:24 pm, Johanna Belanger wrote: >> >>> I ended up giving him a brief description of Clojure, with stress on its >>> ability to do heavy lifting with very little code, and sent him a link to >>> Neal Ford's talk "The Curious Clojurist" >>> <https://www.youtube.com/watch?v=bxLnpgnDApg>. We'll see what happens. >>> Thanks everyone for your advice. >>> >>> On Thursday, July 9, 2015 at 3:20:23 PM UTC-7, Johanna Belanger wrote: >>> Hi :) >>> >>> I've recently broached the subject of Clojure with another dev in my >>> organization, and his response was basically "What's Clojure"? and I'm not >>> sure how to answer that in a way that might inspire him. "It's a >>> dynamically-typed functional Lisp with persistent immutable data structures >>> that runs on the JVM" doesn't seem like it will grab his interest. =) >>> >>> I work primarily in .NET, and he does enterprise Java. I don't know him >>> well enough to know how happy he is with it. He did express interest in >>> learning .Net. >>> >>> I came to an appreciation of Clojure through >>> >>> -CQRS (the power of decomplection!) >>> -Sussman and Abelson's SICP class at MIT online (the power of homoiconicity >>> and functions!) >>> -the death of Silverlight (alternatives to Javascript in the browser?) >>> >>> By the time I found Rich Hickey's talks (eg Simple Made Easy) I was pretty >>> well primed to love Clojure. I've been using it for little personal >>> projects and prototyping for a couple of years, but I haven't put it in >>> production because no one else here knows it. >>> >>> Could anyone tell me how they got from enterprise Java to Clojure? >>> >>> Thanks very much, >>> Johanna >>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To post to this group, send email to clo...@ <>googlegroups.com >>> <http://googlegroups.com/> >>> Note that posts from new members are moderated - please be patient with >>> your first post. >>> To unsubscribe from this group, send email to >>> clojure+u...@ <>googlegroups.com <http://googlegroups.com/> >>> For more options, visit this group at >>> http://groups.google.com/group/clojure?hl=en >>> <http://groups.google.com/group/clojure?hl=en> >>> --- >>> You received this message because you are subscribed to the Google Groups >>> "Clojure" group. >>> To unsubscribe from this group and stop receiving emails from it, send an >>> email to clojure+u...@ <>googlegroups.com <http://googlegroups.com/>. >>> For more options, visit https://groups.google.com/d/optout >>> <https://groups.google.com/d/optout>. >> >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clo...@googlegroups.com <> >> Note that posts from new members are moderated - please be patient with your >> first post. >> To unsubscribe from this group, send email to >> clojure+u...@googlegroups.com <> >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en >> <http://groups.google.com/group/clojure?hl=en> >> --- >> You received this message because you are subscribed to the Google Groups >> "Clojure" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to clojure+u...@googlegroups.com <>. >> For more options, visit https://groups.google.com/d/optout >> <https://groups.google.com/d/optout>. > > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with your > first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > <http://groups.google.com/group/clojure?hl=en> > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com > <mailto:clojure+unsubscr...@googlegroups.com>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.