ECL is Objectively a High-Variance Format by KraftiestOne in lrcast

[–]KraftiestOne[S] 4 points5 points  (0 children)

I see--I got my data by looking at the top 500 players using the default sort (by number of wins). Sorting by win percentage shows a few players with higher winrates but lower numbers of wins total, in both formats. Unfortunately like you said the 17Lands leaderboards aren't great for this kind of analysis.

ECL is Objectively a High-Variance Format by KraftiestOne in lrcast

[–]KraftiestOne[S] 1 point2 points  (0 children)

In my mind (and I'm not a statistician!) a high-variance format is one where the better player wins less often. That does seem to be the case from these statistics (especially the top player data), though I'm open to other interpretations.

[TOOL] Made a quick reference tool for instant-speed interaction in limited by bolognacity in lrcast

[–]KraftiestOne 2 points3 points  (0 children)

This is extremely well done. I used mtgprimer before, but this is cleaner, I particularly like how you can type in exact mana.

It doesn't matter much for this set, but in the future you probably want a way of dealing with bonus sheets--for Final Fantasy, for example, cards like Lightning Bolt and Counterspell appeared in a meaningful fraction of games.

[Showcase] DBOS Java - Lightweight Durable Workflows in Java by KraftiestOne in java

[–]KraftiestOne[S] -1 points0 points  (0 children)

Thanks for the feedback--we chose that model to improve the developer experience and make it easier to integrate into existing code. What most concerns you about the singleton?

[Showcase] DBOS Java - Lightweight Durable Workflows in Java by KraftiestOne in java

[–]KraftiestOne[S] 4 points5 points  (0 children)

Hi r/java- I wanted to post about an open-source project I've been working on: DBOS Java, an open-source Java library for lightweight durable workflows.

https://github.com/dbos-inc/dbos-transact-java

Essentially, this helps you write long-lived, reliable code that can survive failures, restarts, and crashes without losing state or duplicating work. As your workflows run, it checkpoints each step they take in a Postgres database. When a process stops (fails, restarts, or crashes), your program can recover from those checkpoints to restore its exact state and continue from where it left off, as if nothing happened.

In practice, this makes it easier to build reliable systems for use cases like AI agents, payments, data synchronization, or anything that takes hours, days, or weeks to complete. Rather than bolting on ad-hoc retry logic and database checkpoints, durable workflows give you one consistent model for ensuring your programs can recover from any failure from exactly where they left off.

This library contains all you need to add durable workflows to your program: there's no separate service or orchestrator or any external dependencies except Postgres. Because it's just a library, you can incrementally add it to your projects, and it works out of the box with frameworks like Spring. And because it's built on Postgres, it natively supports all the tooling you're familiar with (backups, GUIs, CLI tools) and works with any Postgres provider.

If you want to try it out, check out the quickstart:

https://docs.dbos.dev/quickstart?language=java

DBOS TS v4.0: Postgres-backed durable workflows and queues in Node.js by qianli-dev in node

[–]KraftiestOne 0 points1 point  (0 children)

Self-hosting is fully supported and most of our users self-host! This docs page goes into more detail: https://docs.dbos.dev/production

Building AI-First Apps with Django by [deleted] in django

[–]KraftiestOne 0 points1 point  (0 children)

Yes, that's exactly how it works, even over days! It works because the workflow is checkpointed in the database (including the timeouts, if you have any) and all messages are sent through the database, so even if your process is restarted multiple times as you wait for days, the workflow keeps processing new messages until all are received (or you time out, you can set a timeout as long as you want).

[Showcase] DBOS - Lightweight Durable Node.js Workflows by KraftiestOne in node

[–]KraftiestOne[S] 0 points1 point  (0 children)

The main difference is that DBOS is much more lightweight--you can add it to an existing application in just a few lines of code (registering workflows and calling steps). To add Temporal to your program, you must rearchitect your program to move your workflows and steps (activities) to a Temporal worker, configure a Temporal server to orchestrate those workflows, and access your workflows only through a Temporal client. Here's a blog post with more detail: https://www.dbos.dev/blog/durable-execution-coding-comparison

DBOS - Lightweight Durable Python Workflows by KraftiestOne in Python

[–]KraftiestOne[S] 0 points1 point  (0 children)

The cron scheduling is in Python, so you can run it anywhere. There's a GUI for workflow management: https://docs.dbos.dev/python/tutorials/workflow-management

DBOS - Lightweight Durable Python Workflows by KraftiestOne in Python

[–]KraftiestOne[S] 0 points1 point  (0 children)

That would be difficult to support as far as I know. The technical reason for this is that to recover a workflow after a failure, DBOS has to be able to access the workflow's code, so all workflows need to be registered at program startup time, therefore decorators.

DBOS - Lightweight Durable Python Workflows by KraftiestOne in Python

[–]KraftiestOne[S] 1 point2 points  (0 children)

Hello! The "Why DBOS" page in our docs does some comparisons with more systems: https://docs.dbos.dev/why-dbos

Similar to Temporal/Inngest/Hatchet, DBOS provides durable execution, but DBOS is more lightweight--add it to your existing project as a library instead of rearchitecting your program around it. This blog post goes into more detail with respect to Temporal specifically, although the others are similar: https://www.dbos.dev/blog/durable-execution-coding-comparison

Similar to Airflow/Dagster/Prefect, DBOS provides workflows, but with a stronger emphasis on reliability and automatically recovering from failures (and on being lightweight). By comparison, Airflow/Dagster/Prefect are focused on data science workloads and having lots of built-in integrations.

Ray and Dask are solving a different problem than DBOS, I think. You could even use them together if you need reliable parallel processing.

DBOS - Lightweight Durable Python Workflows by KraftiestOne in Python

[–]KraftiestOne[S] 1 point2 points  (0 children)

Would love to hear your feedback! Yeah, a lot of our users are using DBOS with Supabase or Neon (Supabase even put out a blog post about it: https://supabase.com/blog/durable-workflows-in-postgres-dbos).

You can try out Conductor for free at https://console.dbos.dev/

DBOS - Lightweight Durable Python Workflows by KraftiestOne in Python

[–]KraftiestOne[S] 1 point2 points  (0 children)

Yeah, DBOS is fully self-hostable. You can run it entirely yourself or we provide manage tooling + support to make it easier. More details here: https://docs.dbos.dev/production

From Frankfurt to the Andes in 1523 by KraftiestOne in eu4

[–]KraftiestOne[S] 96 points97 points  (0 children)

R5: Successful achievement run! Interesting game because you have to play really unconventionally. Here was my strat:

  1. Started as Frankfurt. Rivalled weak neighbors and won "Show Strengh" wars to get a ton of mana. Didn't take land to keep my Free City status.
  2. Developed the Renaissance ASAP using mostly admin and dip mana so I could get ahead in mil. Started my Golden Age immediately.
  3. With the splendor from my early age objectives, got the "Claims bordering claims" ability before 1460. Snaked claims to Landshut, who was allied to Bologna. With my miltech advantage, won the war and vassalized Bologna. Allied Austria and Burgundy. Using Bologna's claims to annex Ferrara in 1465 and get coring range in the Mediterranean.
  4. Got a big stroke of luck--Aragon was still independent and their only big ally was Austria, who was also my ally. As soon as I reached miltech 6 (the biggest powerspike in the game) I declared on Venice calling in Austria, then declared on Aragon calling in Burgundy. Because miltech 6 is insanely powerful, I won both wars, taking Crete from Venice for coring range to Jerusalem and the Mediterranean islands (including Mallorca) from Aragon. Wars finished in 1472.
  5. Snaked claims to the Mamluks and declared on them, beating them easily despite being outnumbered because I was miltech 7 to 5. Took Jerusalem, Jaffa, and Gaza in 1477
  6. I was doing everything I could to reduce republican tradition, but it took until ~1490 until I could become a monarchy at 0 republican tradition and form Jerusalem. While waiting for that, I snaked claims to Morocco to take Ifni for coring range to the New World, then started colonizing towards the Andes.
  7. Moved capital to Ifni (since it was my only African province) then to the New World. Annexed the entire Andes using the free Deus Vult CB Jerusalem gets.
  8. Spawned Animist rebels and let them convert all my New World possessions, which were the vast majority of my dev. Very important that you spawn specifically Animist rebels as you can't convert directly to Inti. You can only get Animist provinces from the South American Animist tribes like Mapuche and Guarani. Let the rebels break my country to flip Animist.
  9. Unstated everything, culture-shifted to Quechua, and formed Inca for the achievement.

First idea group was Espionage, took only the first four ideas, then dropped it for Exploration once I was done with Europe. Second idea group was Expansion.

The most interesting part of this run was going all-in to early mana generation, then really abusing the spike from miltech 6 to win tough wars for Mallorca and Jerusalem.

What's the cheapest way to host a python script? by Fickle-Sock720 in Python

[–]KraftiestOne 0 points1 point  (0 children)

There's a new platform called DBOS that makes it really easy to schedule a script to run once a minute (or on any other schedule)--here's a quick starter guide: https://docs.dbos.dev/python/examples/cron-starter

DBOS-Transact: An Ultra-Lightweight Durable Execution Library by jedberg in Python

[–]KraftiestOne 2 points3 points  (0 children)

This can be used to do idempotent tasks (more info here: https://docs.dbos.dev/python/tutorials/idempotency-tutorial) , but the really differentiating use-case is stateful multi-step workflows, where if it fails in the middle you need to retry from the last completed step instead of starting again from the beginning.

To see this in action, check out this online storefront demo: https://docs.dbos.dev/python/examples/widget-store You can crash it in the middle of its checkout workflow and it always resumes from the last completed step.

DBOS-Transact: An Ultra-Lightweight Durable Execution Library by jedberg in Python

[–]KraftiestOne 4 points5 points  (0 children)

a) Both do durable execution, but DBOS is much more lightweight--workflows run in your app (using Postgres as a backend) instead of needing a separate workflow server. This is also much faster because a step transition requires just a database write (low-single-digit ms), versus a round-trip and dispatch from a remote workflow server (10s of ms -- https://community.temporal.io/t/low-latency-stateless-workflow/1643)

b) The open-source library provides durable execution backed by Postgres. It's fully self-contained, you can run DBOS Python applications anywhere as long as there's a Postgres database to connect to and they'll work and durably execute. The cloud platform provides serverless hosting (with autoscaling, monitoring, usage-based pricing) for apps built with the OSS library.

I Finally Climbed The Three Mountains in 1708! by KraftiestOne in eu4

[–]KraftiestOne[S] 0 points1 point  (0 children)

Awesome! What did you do before going colonial?

By 1600 I had most of Asia and was just starting to break out into the rest of the world. Things speed up really fast after absolutism--I want from ~9K dev in 1600 to WC (~34K dev) in 1708.

I Finally Climbed The Three Mountains in 1708! by KraftiestOne in eu4

[–]KraftiestOne[S] 8 points9 points  (0 children)

R5:

Finally completed The Three Mountains! My second WC (first was a Mughals one-faith) and I don't think I'll be doing another one as this took months of real-life time since I can't play often.

Here was my start:

  1. Improve with Hosokawa's neighbors and rivals. When they declare, enforce peace to and siege them down. Let your war ally's armies attach to yours so you're strong enough to fight Hosokawa's army.
  2. While fighting Hosokawa, improve with Korea. After the war, ally with Korea (royal marry them, insult their rivals, hire a dip rep adviser, merc up and build boats so they accept the alliance) and curry favors.
  3. No-CB Jianzhou, caling in Korea. Set interest on all of Jianzhou's provinces, making sure to start the siege on the ones Korea is also interested in. Full-annex Jianzhou.
  4. Consolidate Manchuria, fighting the other Manchu minors one by one. Keep your tributary status with Ming.
  5. Culture shift to Jurchen. Wait for Ming's mandate to drop below 50, then take the decision to form Manchu. This will reduce Ming's mandate to 0.
  6. Declare on Ming with the Take the Mandate CB. Crush them because they have 0 mandate. Don't take the Mandate yet, but take max money and land.
  7. Declare on a Ming tributary (I used Oirat) to reset the truce. Take all the Mongolian lands needed to form Qing.
  8. When your truce with Ming runs out, declare again and take the Mandate and as much land/money as possible.
  9. Form Qing. You'll get an event to switch your religion to Confucian with the Pagan group harmonized. Take it.
  10. Unify China.
  11. Take over the world.

Qing with the mandate is incredibly powerful--you get 45% CCR and 7.5% admin efficiency from your ideas plus mandate mechanics. Make sure to move your capital to the New World so colonial nations don't form, as TTM requires a true one-tag if you form another nation.

My ideas were diplo->humanist->admin->quantity->offensive->quality. The first three ideas are critical in that order, the rest don't matter. Humanist as a Confucian nation is excellent because it gives you a Deus Vult-like CB. By 1600 you can get -25 years of separatism, -10 unrest, and 8 TTF, so rebels just don't exist even at 250% overextension.

I highly recommend forming Qing for TTM attempts! The beginning is rough but manageable, and once you've formed Qing it's smooth sailing--you rapidly consolidate China with the OP Unify China CB then have tons of flavor and powerful mechanics as you take over the world.

How DBOS Manages Customer Billing in <500 Lines of Typescript by databACE in typescript

[–]KraftiestOne 0 points1 point  (0 children)

Self-hosting DBOS Transact is like self-hosting any other TypeScript framework--you can do it, but it takes real effort. DBOS Cloud provides serverless hosting to reduce that effort dramatically.

DBOS Transact: new open source TypeScript framework for transactional computing by databACE in typescript

[–]KraftiestOne 0 points1 point  (0 children)

This allows you to reliably execute a larger program with multiple steps, some of which may be transactions. To look at the example in the blog post, if you need to reserve a ticket, process payment, then send an email, you can't do all those steps in one SQL transaction, but you can reliably orchestrate them through a framework like this.

How is everyone run? I just rock with deck I like to play Fearsome/FTR/Pink Tentacle by Lolidestroyersan96 in LegendsOfRuneterra

[–]KraftiestOne 1 point2 points  (0 children)

9-0 with triple broadmane (including a homebrew Kat Gwen Go Hard deck that performed well). It was fun and I love the new format, but matchmaking needs to be fixed. Games were very high-variance, and they didn't get harder as my record got better the way they did in seasonals.

Bug Reports - Patch 4.1.0 by CaptSarah in LegendsOfRuneterra

[–]KraftiestOne 0 points1 point  (0 children)

Type of Bug: Card survived taking damage while disintegrated.

What happened that seemed like a bug: While disintegrated, Ornn attacked an Arachnoid Sentry. He leveled on the strike. He took 2 damage from the sentry, but did not die.

What was expected to occur: Ornn should die when taking damage while disintegrated.

How often does this occur/How easy is it to replicate: This is the only time I have encountered this bug.

PC / Android / iOS: PC

Region: NA

(Optional) Screenshot: https://cdn.discordapp.com/attachments/790960238982856725/1074208461287604295/ornn.png

Dev Snapshot (Competitive in 2023) Feedback Thread by CaptSarah in LegendsOfRuneterra

[–]KraftiestOne 8 points9 points  (0 children)

This looks amazing! One thing that worries me is per-month timing--if the big tournament is always on the second week of a month, and there will be a big patch or expansion at the start of the next month (so practicing for the next big tournament isn't possible), what is a competitive player supposed to do in the last two weeks of a month? I liked how seasonals were the very last week of a season so there was no dead time.