Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
kodablah
searching PlanetScale…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
12 ms
·
121.
▲
by
kodablah
3y ago
That framework was created by the cofounder of Temporal
122.
▲
by
kodablah
3y ago
From my limited understanding, Dagster and Airflow are limited DAG-based tools compared to Temporal that lets you write your logic in the programming language directly (loops, conditionals, coroutines, other libraries, etc) so long as you r
123.
▲
by
kodablah
3y ago
Thanks! Other commenter has also convinced me to investigate expression approach. I was hoping not to force people to create lambdas for each thing they want to invoke from a code readability POV, but it sounds like the ecosystem wants to f
124.
▲
by
kodablah
3y ago
Hrmm, I will investigate using an expression tree for this (now's the time while it is alpha). I was hoping to avoid people having to create lambdas. I hope I don't run into overload ambiguity with the existing `ExecuteActivity` c
125.
▲
by
kodablah
3y ago
Activities may actually run on completely different systems than where the workflow calls execute on. All "execute activity" is from a workflow perspective is telling Temporal server to execute an activity with a certain string na
126.
▲
by
kodablah
3y ago
Hrmm, I admit not knowing a lot about Windows Workflow Foundation, but from a quick glance I suspect they both have roots in the same place - deterministic workflow authoring that invokes activities like Amazon SWF and Azure Durable Task Fr
127.
▲
by
kodablah
3y ago
That's no coincidence, Temporal is founded by the creators of Amazon Simple Workflow. See https://temporal.io/about .
128.
▲
by
kodablah
3y ago
It's not just that worry, it's the other reasons on top of that detailed in the post. But note that GP's post doesn't _call_ the method, it just references it which is basically what we are doing in the post. But for thi
129.
▲
by
kodablah
3y ago
> Which sounds like a lot of heavy lifting How is `e` created for the `e => e.DoPurchaseAsync(purchase)` lambda? You're going to have to do that lifting anyways to create an instance for `e` that isn't really a usable instan
130.
▲
by
kodablah
3y ago
Temporal determines a workflow is non-deterministic if upon code replay the high-level commands don't match up with what happened during the original code execution. In this case, technically it's safe to change the code this way
131.
▲
by
kodablah
3y ago
That's basically what is happening here, except you create `e` ahead of time instead of a do-anything-you-want lambda. But they essentially the same thing, though I think `ExecuteActivityAsync(MyActivities.Ref.DoPurchaseAsync, etc...)`
132.
▲
Temporal .NET – Deterministic Workflow Authoring in .NET
(temporal.io)
152 points
by
kodablah
3y ago
|
49 comments
133.
▲
by
kodablah
3y ago
Having integrated C# and Rust recently[0], I have found that unlike Node w/ neon and Python w/ PyO3 + PyO3 Asyncio, there is no good Rust integration with .NET. Interopterus, rnet, etc leave a good bit to be desired. I ended up wr
134.
▲
by
kodablah
4y ago
> Unless Pydantic is downloading all OS binaries with the package and loading the right one at runtime, this would become a "problem" as well. Nah, it's not that bad. I built a Rust-backed Python library used by many [0],
135.
▲
by
kodablah
4y ago
This post explains how we made a custom, deterministic Python asyncio durable event loop that intercepts timers and other things to make writing Temporal workflows mostly seamless with asyncio. Questions welcome.
136.
▲
Temporal Python – A durable, distributed asyncio event loop
(temporal.io)
10 points
by
kodablah
4y ago
|
1 comments
137.
▲
by
kodablah
4y ago
Like "literate programming" + "shell scripts". Ideally the latter can be a better, cross-platform language (e.g. "```python" code fences).
138.
▲
by
kodablah
4y ago
Using dataclass for all basic state classes whose primary purpose is public state with sensible init makes sense. But for the many other purposes of classes that need custom init, advanced field defaults, no equality, custom repr/str,
139.
▲
by
kodablah
4y ago
I mean the default asyncio event loop can be replaced/extended where you won't have to know/remember on each create_task. But yes, it is an unintuitive default.
140.
▲
by
kodablah
4y ago
It is for this reason in Temporal Python[0], where we wrote a custom durable asyncio event loop, that we maintain strong references to tasks that are created in workflows. This wouldn't be hard for other event loop implementations to d
141.
▲
Show HN: Superpose – Compile-time Go transformations in multiple dimensions
(github.com)
2 points
by
kodablah
4y ago
|
0 comments
142.
▲
by
kodablah
4y ago
Maturin wasn't powerful enough for our use cases, so we used raw setuptools-rust and cibuildwheel. Even with abi3 compat, yes it's not always easy to get the wheels exactly as you want. And with a lack of ARM runners by default wi
143.
▲
by
kodablah
4y ago
For many, language freedom/portability outweigh other concerns and this is where WASM has value. Running an algorithm written in Rust, Go, C, Zig, etc on the JVM with no JNI has value vs rewriting. > It is lower level, but is that r
144.
▲
by
kodablah
4y ago
Awesome. Now I just need a way to define a cross-language contract and this would be very helpful for my uses. Ignoring performance for a second, one wonders if you could take proto and use that as the data in/out _and_ the API/RP
145.
▲
by
kodablah
4y ago
We built the logic backing the Temporal Python SDK[0] in Rust and leverage PyO3 (and PyO3 Asyncio). Unfortunately Maturin didn't let us do some of the advanced things we needed to do for wheel creation (at the time, unsure now), so we
146.
▲
Temporal Python SDK Beta 2 – Fault-tolerant asyncio-based workflows
(github.com)
4 points
by
kodablah
4y ago
|
0 comments
147.
▲
by
kodablah
4y ago
HN who is hiring. Now that there are so many remote positions, it is definitely the best place for software jobs for the discerning developer. I went through the hundreds and found a select few that met my criteria (open source, multi langu
148.
▲
by
kodablah
4y ago
https://temporal.io/ (disclaimer: I work for Temporal on the Go SDK and upcoming Python SDK)
149.
▲
by
kodablah
4y ago
Take mine too: https://github.com/cretz/software-ideas/issues
150.
▲
by
kodablah
4y ago
> I wonder why we went down that whole async/await craze with so many languages? For single-threaded event loops because most of those languages did not want to put the concept of thread safety onto the developer (e.g. JS and Python
More ›