It starts with the general rules of lambda calculus, then build up some basic functions (like in the PDF linked in this thread) and continues to build data types like Natural Numbers, List, String, Tree and operators for manipulating them. The book also explains about the evaluation methods as well as covering how ML and LISP uses lambda calculus.
Related: This is an interview with David Dunning of Dunning-Kruger Effect. I find it highly entertaining and would recommend listening just for a few minutes in case it tickles your interest too. I've listed a couple of sources of the same podcast, just in case.
Although it may look like just Domain Driven Design (DDD) and F# from the title. I think I've learnt a lot more from it. It changed the way I approached a problem and I somehow keep coming back to the book to get a refresher of the teachings in it. I suspect it is due to the influence of F# and functional paradigms that is also being shared in the book.
On the same note, I recently shared a link[0] to his great beginner talk on functional programming languages. This was by far the best introduction to monoid, monads and few other functional programming terms.
Direct youtube[1] for those who don't want to click twice :)
Even if you never plan to touch F#, I found it a really insightful approach for modeling domain problems - and capturing the rules of the system you are trying to model in your code and data types.
Really well done, and such a easy read as well.
It's not that it's revolutionary, but it one of those things that once you read it both seems obvious and also makes you wonder why we do things any other way.
Seconding this! It's one of the very few tech books I've read cover to cover more than once. I similarly find myself revisiting individual pieces of it often.
It completely changed the way I thought about the role of type systems -- and I don't even mean in terms of monads, functors, or any other higher level category theoretic stuff. I mean just the day-to-day business coding idea of representing more of your domain directly in the type system.
I now find that pencil and paper is the best programming tool. It's massively easier to iterate on types and arrows between them than it is to pluck away against and refactor actual implementations.
I bought this book when it first came out, and I highly recommend it. It has influenced my implementation of DDD concepts in regular object oriented languages (so not just F# or functional languages).
I would highly recommend JUNKERS https://shop.junkers.de/en/ For the mechanical options, they use either ETA or Miyota (Citizen), both of which are very good. And the build quality are excellent. Best of all, it doesn't break the bank to get their watches.
hmm 200K/month for 20 HA nodes with 20TB and 4TB RAM. A bit pricy and 20TB is kindah low for max disk. A single PG instance on a hefty box can do 20TB.
It comes with more than just the database. The package includes, but not limited to:
1. All enterprise features.
2. All nodes being managed by Citus themselves. All the upgrades or rebalancing will be done by them.
Another option which should be cheaper is paying for the Enterprise license and manage it on your own hardware with your own setup.
Finally, you could also spin up the community version, which is free but lack important enterprise features such as rebalancing the shards when you add more nodes to the setup.
Thank you for all the info the use case we are running a setup with dedicated PG RDS instance for each client some of them are pushing the RDS limits of 6TB potentially looking to move to multi tenant setup as managing 100+ instances is not fun. The read load is fairly light it's rare that more than a few people are running queries against an instance. Would it be possible to consolidate using Citus (are there any advantages as far as ease of management etc?)
Craig from Citus here, if disk is your biggest bottleneck we do have some flexibility there and can go larger than 1 TB per node if needed. Or it may be that Citus isn't the best tool for you as well.
In general what we find is most Citus users are either memory constrained or constrained on processing power.
this video by Chas Emerick (co-author of clojure programming) also gives a good introduction to start with clojure, especially for people who uses eclipse.
It starts with the general rules of lambda calculus, then build up some basic functions (like in the PDF linked in this thread) and continues to build data types like Natural Numbers, List, String, Tree and operators for manipulating them. The book also explains about the evaluation methods as well as covering how ML and LISP uses lambda calculus.