
Pony Patterns: Waiting - spooneybarger
http://www.monkeysnatchbanana.com/2016/01/18/pony-patterns-waiting/
======
ioquatix
Celluloid supports this pattern out of the box with `every(N)`, `after(N)` and
`timeout(N)`. N.B. I wrote the modern Celluloid Timers implementation.
Celluloid is a Ruby actor framework.

------
eggy
I learned a bit of Erlang, played with Elixir and LFE (Lisp Flavored Erlang).
They're all good, and it just comes down to syntax for me at this point. You
said you were using Pony for work. Is Pony stable for real work, and how do
you think it compares to the BEAM languages above?

~~~
spooneybarger
Erlang and BEAM are much more mature than Pony. If maturity is a primary
concern, you shouldn't be looking towards Pony at this point. Play around with
it, sure, but not take it to production. We had a special set of reasons for
going with. We find the concurrency model to be easy to reason about, love the
type system and love the performance. You get C type performance.

Pony is stable enough for us to make the tradeoff for what it gets us in terms
of lower resource usage, excellent latency and general performance
characteristics.

All of the BEAM languages are untyped. Pony has an excellent type system that
can make guarantees about the correctness of your program at compile time.

BEAM languages can draw on OTP which is a huge win. Pony has a very small
standard library at this point. The library size is offset by its excellent C
FFI but if you are looking to do distributed computing where performance is
not a primary concern, you are better off with a BEAM language.

Erlang has QuickCheck and a wealth of other tools that aren't available for
Pony right now.

Pony was the right language for us, we believe in it and its future but for
most people right now, it's probably not the right choice. I'd be happy to
talk over email if you have more questions. Feel free to drop me a line:
sean@monkeysnatchbanana.com

