HN user

sorentwo

1,165 karma

Creator and maintainer of Oban, the robust background job processor for Elixir

https://oban.pro

Posts24
Comments44
View on HN
www.quora.com 1mo ago

What is the most sophisticated piece of software ever written?

sorentwo
1pts0
www.thetimes.com 2mo ago

Digger engines drive JCB's attempt on hydrogen-powered land speed record

sorentwo
3pts0
www.wsj.com 4mo ago

Iran's Sea Mines Are One of Its Most Powerful Weapons

sorentwo
3pts0
oban.pro 5mo ago

Bridging Elixir and Python with Oban

sorentwo
137pts54
github.com 6mo ago

Show HN: Oban for Python (Job Orchestration Framework)

sorentwo
2pts0
pudding.cool 8mo ago

Are Pop Lyrics Getting More Repetitive? (2017)

sorentwo
4pts0
elixir-lang.org 1y ago

Elixir Outreach stipend for speakers and trainers

sorentwo
2pts0
thethreevirtues.com 1y ago

Three Virtues

sorentwo
4pts0
www.honeybadger.io 1y ago

Elixir Performance Monitoring

sorentwo
4pts0
oban.pro 1y ago

Weaving Stories with Cascading Workflows

sorentwo
1pts0
oban.pro 1y ago

Weaving Stories with Cascading Workflows

sorentwo
2pts0
engineering.mit.edu 1y ago

Why hasn't commercial air travel gotten any faster since the 1960s? (2009)

sorentwo
142pts667
elixir-lang.org 1y ago

Remote: Growing from Zero to Unicorn with Elixir

sorentwo
8pts0
oban.pro 1y ago

Oban Web Is Open Source

sorentwo
2pts0
www.nytimes.com 1y ago

Relive the Biggest Little Runs in Paris

sorentwo
2pts1
getoban.pro 1y ago

Overhauled Composition–Oban Pro Launch Week

sorentwo
1pts0
getoban.pro 1y ago

Job Decorators–Oban Pro Launch Week

sorentwo
3pts0
getoban.pro 1y ago

Enhanced Unique and Distributed Postgres–Oban Pro Launch Week

sorentwo
2pts0
getoban.pro 2y ago

Unified Migrations and Job Chaining–Oban Pro Launch Week

sorentwo
1pts0
www.princeton.edu 2y ago

Princeton astrophysicists re-imagine world map (2021)

sorentwo
28pts12
elixir-lang.org 2y ago

Scaling a Streaming Service to Concurrent Viewers

sorentwo
5pts0
getoban.pro 2y ago

Optimizing Connections and Bloat in Oban Pro

sorentwo
1pts0
getoban.pro 2y ago

Oban Starts Where Elixir Tasks End

sorentwo
2pts0
getoban.pro 2y ago

Oban Web v2.10 RC Released

sorentwo
2pts0

As a library maintainer, skill and taste are almost equally important. If I can’t recognize inefficiencies, difficult to maintain code, or generally unpleasant code smells, then people lose trust in my libraries/products and it’s no better off than some recently generated slop.

Years of production experience, wisdom, and using something in anger matters for both skill and taste.

The efforts we've undergone to make Oban (and Pro) work with CRDB have been ridiculous. Feature detection all over because of a lack of common operators and functions that can't be used in indexes. The worst is the rampant "serialization_failure" errors that force continual transaction retries. Not how I'd suggest scaling Postgres.

That said, as a predecessor to dbos in building durable workflows just using Postgres, I concur with the overall sentiment.

Vim 9.2 5 months ago

Nearly this, but using ghostty instead of tmux. You don’t get the remote connection aspect of tmux, but for splitting/zooming/preserving windows it is fantastic. The best part is you can configure natural shortcuts rather than using a leader for everything.

With a typical Redis or RabbitMQ backed durable queue you’re not guaranteed to get the job back at all after an unexpected shutdown. That quote is also a little incorrect—producer liveness is tracked the same way, it’s purely how “orphaned” jobs are rescued that is different.

Transactions around fetching/updating aren't trivial, that's true. However, the work that you're doing _is_ regular activity because it's part of your application logic. That's data about the state of your overall system and it is extremely helpful for it to stay with the app (not to mention how nice it makes testing).

Regarding overall throughput, we've written about running one million jobs a minute [1] on a single queue, and there are numerous companies running hundreds of millions of jobs a day with oban/postgres.

[1] https://oban.pro/articles/one-million-jobs-a-minute-with-oba...

There are other projects that implement the ideas in OSS, but that's the same in Elixir. Not that we necessarily invented DAGs/workflows, but our durable implementation on the Elixir side predates DBOS by several years. We've considered it an add-on to what Oban offers, rather than the entire product.

Having an entirely open source offering and selling support would be an absolute dream. Maybe we'll get there too.

It supports workflows, rate limiting, unique jobs, bulk operations, transactional enqueuing, etc. Why not move these things to the OSS version to be competitive with existing options, and focus on dedicated support and more traditional "enterprise" features, which absolutely are worth $135/month (the Oban devs provide world-class support for issues).

We may well move some of those things to the OSS version, depending on interest, usage, etc. It's much easier to make things free than the other way around. Some Pro only features in Elixir have moved to OSS previously, and as a result of this project some additional functionality will also be moved.

Support only options aren't going to cut it in our experience; but maybe that'll be different with Python.

There are many more options available in the Python ecosystem than Elixir, so you're competing against Temporal, Trigger, Prefect, Dagster, Airflow, etc etc.

There's a lot more of everything available in the Python ecosystem =)

Oban has been a lifesaver for me and it is the tool I miss the most from the Elixir ecosystem when doing work in Python

That's wonderful to hear! Hopefully you can make use of Oban in both places now =)

I have one question: are there any plans for interop between Oban and the new Django Tasks[1]?

There aren't any plans at this point, but it's certainly possible.

Pleased to see this posted! A lot of design time and effort behind this project (something we'll be speaking about this year). Happy to answer any questions people may have.

IBM Technology Atlas 10 months ago

The roadmap is purely about AI, and reads like it was written by AI. It’s purely trendy and myopic.

The problem was with restrictive connections, not DNS based discovery for clustering. It wasn't possible (as far as I'm aware) to connect directly from one dyno to another through tcp/udp.

Ping requires something persistent to check. That requires creating tuples, and most likely deleting them after they’ve been consumed. That puts pressure on the database and requires vacuuming in ways that pubsub doesn’t because it’s entirely ephemeral.

Not to mention that pubsub allows multiple consumers for a single message, whereas FOR UPDATE is single consumer by design.

We have Postgres based pubsub, but encourage people to use a distributed Erlang based notifier instead whenever possible. Another important change was removing insert triggers, partially for the exact reasons mentioned in this post.

Postgres LISTEN/NOTIFY was a consistent pain point for Oban (background job processing framework for Elixir) for a while. The payload size limitations and connection pooler issues alone would cause subtle breakage.

It was particularly ironic because Elixir has a fantastic distribution and pubsub story thanks to distributed Erlang. That’s much more commonly used in apps now compared to 5 or so years ago when 40-50% of apps didn’t weren’t clustered. Thanks to the rise of platforms like Fly that made it easier, and the decline of Heroku that made it nearly impossible.