while(true) {
Thread.sleep(1, MONTH);
sendReminderEmail(user);
}
...which would normally require one to manually keep track of state in queues and key-value stores and idempotent updates, but with temporal the developer can just focus on the simple business rules. The runtime of Temporal takes care of compiling that down into proper state-machine logic.I'll volunteer that we don't have Python or JS SDKs right now but are working on it (https://github.com/temporalio/sdk-node).
i think `Thread.sleep(1, MONTH);` is a profound paradigm change in programming that I have been struggling to find the words to describe. It's like, where you used to need to write "multiuser" code, you can now write code as if you simply have one machine per user and it idled or did work as long as your user's activity is still going, whether we're talking the end-to-end journey of a food delivery startup or machine learning data pipelines or infrastructure provisioning at a cloud startup (you can even run a workflow for forever, with some careful segmentation https://docs.temporal.io/docs/concept-workflows#faq).
this is useful market research for us, thank you for taking up the suggestion :)
i'd say something that is maybe hard to appreciate until you really get into it is just how much goes into making this ultra scalable with distributed transactions. If you have ~20 mins for it, I wrote this up recently: https://docs.temporal.io/blog/workflow-engine-principles
What I've been working on in recent years is actually not too far off in terms of how to approach making truly simple code, but is far off in the sense that it'll take me (alone) years to make a pragmatic implementation, probably as a language in its own right. Rather than attempt to make a system partition tolerant I started thinking what if network partitions were assumed as the default? To answer that question you have to do things like measure the information entropy of data, use knot theory, representation theory such as young lattices, symmetric group mapping, character groups, prime number theory, among other goodies, to represent event-states, workflows, etc. Most of all (this is where things get weird) is rather than code programs, the emphasis becomes how to easily declaratively code and build "homotopic" multiplexed protocols instead (while keeping the business logic familiar), that way SDKs and integrations are a thing of the past. All this has of course has to use existing web standards like HTTP, otherwise it won't be adopted. My friend always laughs at me when I try to explain it to him, so I apologize, ha. But that's all the more reason to appreciate technology like temporal because it's something a developer can use today.