Hacker News new | past | comments | ask | show | jobs | submit login
Genesis of a New Programming Model (stealthrocket.tech)
39 points by pelletier 10 months ago | hide | past | favorite | 17 comments



> Whenever the Dispatch function encounters a temporary error like a rate limit, the operation is rescheduled with automatic adjustment of the back-off delay.

That's great. Is it persisted to retry even after a reboot?

What informs the end user, in interactive situations, and what does it tell them?

What if the operation is delayed so much that it no longer makes sense; can we cancel it?

How do we identify a particular one, out of thousands going through the same function: by some of the arguments, like in memoization?


Thanks a lot for reading the post and reaching our with questions!

> That's great. Is it persisted to retry even after a reboot?

Absolutely! Our scheduler service manages the state on behalf of the application, even if the program restarts, the operation persists until completion.

> What informs the end user, in interactive situations, and what does it tell them?

Since the Dispatch SDK integrates directly in the code of the application, it's compatible with typical system observability tools. Say you're using metrics or traces to track operations, you can emit this telemetry on your dispatch functions. That being said, we know how important it is to have a built-in solution for this!

> What if the operation is delayed so much that it no longer makes sense; can we cancel it?

Different ways to solve this, one is to simply raise a permanent error so the operation stops, but in some cases it makes more sense for the system to expose controls so the operator can act on group of similar operations for example. Those are features on our roadmap at this time, but definitely agree on the importance!

> How do we identify a particular one, out of thousands going through the same function: by some of the arguments, like in memoization?

Searching through the state or history of the systems is also a key feature that a platform like Dispatch needs to provide to be "complete". We're still in early development so we haven't gotten to add this feature yet, but definitely excited to delivering it!


Hello everyone!

Today marks an important milestone for us with the launch of the developer preview of Dispatch.

Along with a serverless scheduler, we released an open-source Python SDK, providing developers with a simple programming model to integrate with Dispatch. This is the first of many steps on our mission to make distributed application development radically simpler.

To all developers tired of wrestling with infrastructure and eager to experience better tools to develop distributed applications, check out our blog post and take Dispatch for a ride!


Great post! I suggest adding a link to Dispatch earlier in the body. Right now the reader has to get all the way to "You can sign up to the developer preview for free today at https://console.dispatch.run !" before they know where to click (or maybe I need to get new eyeglasses!)


These are great suggestions, thanks for sharing!


Always happy to see a new entry in simple-ish distributed programming! Could you summarize how this differs from, say, Erlang/Elixir?


In some ways, there are a lot of similar aspiration with the Erlang actor model!

A major barrier to Erlang is adopting a new programming language, development tooling, etc...

What we aim to do with Dispatch is bring those distributed programming superpowers to mainstream programming languages that are developers are using.

A major conviction we have is that it should be possible to adopt Dispatch incrementally in an existing application.


So Temporal in Python?


People have told us many times that they tried to use Temporal to solve the problems that we designed Dispatch to solve for, so it's a fair comparison!

What we hope to deliver with Dispatch is a model that is a lot more incremental in its adoption and much simpler than what existing solutions have been able to achieve so far, both in terms of development UX and operational complexity.

Give it a try, and let us know what you think of it!


Looks like Temporal and Prefect had a baby. I hope this gets traction and best luck to the team.


Thanks!


> the operation is now guaranteed to run to completion.

unless the backend breaks somehow (server changed ip/ssl/imap password...) in which case it will result in an endless useless retry loop?


We can run it forever but it’s rarely useful. Usually, all operations have an associated expiration time so if it’s impossible to succeed it will eventually abort.


Sorry, but what does this actually do? I normally solve the problem described here by wrapping the fetch function with a resolving while and a timeout.


To summarize, our scheduler maintains state to allow retries to happen even if the application moves between compute instances, which is quite common when running in the cloud (e.g., deploying on autoscaling containers, or serverless functions).


Programming is dead, prompt AI


I so wish AI could create systems that deal with the complexity of problems that Dispatch solves for. Until then, we’ll still have to write a few lines of code.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: