$30 off During Our Annual Pro Sale. View Details »

Pony: How I learned to stop worrying and embrace an unproven technology

Pony: How I learned to stop worrying and embrace an unproven technology

This is the "Fintech" version of this talk.

Abstract:

Conventional wisdom holds that you should never build your business on top of bleeding-edge technology. Yet, when we at Sendence set out to build our high-performance stream processing engine Wallaroo, we chose to build it in Pony- a high-performance actor-based programming language that has limited industry usage. So far, this decision has worked out very well for us. Pony has helped us move with speed and confidence. In this talk, I'll cover several Pony features that have contributed to moving us forward. I'll also discuss how Pony's immaturity has at times hindered us. By the end of this talk, you'll have a solid understanding of Pony's strengths and weakness and be better equipped to decide if it just might be the right language for your next project.

Sean T Allen

June 26, 2017
Tweet

More Decks by Sean T Allen

Other Decks in Technology

Transcript

  1. Pony
    How I learned to stop worrying and embrace an unproven technology

    View Slide

  2. Sean T Allen
    Author of Storm Applied
    Member of the Pony core team
    VP of Engineering at Sendence

    View Slide

  3. Pony
    Open-source, object-oriented,
    actor-model, capabilities-
    secure, high-performance
    programming language

    View Slide

  4. This talk is…
    The story of Pony told through the story of Wallaroo;
    the product we built with it…

    View Slide

  5. Wallaroo
    High-performance, distributed
    stream processor
    High-throughput
    Low-Latency
    Consistent performance
    Resource efficient

    View Slide

  6. -Sylvan Clebsch

    A programming language is just
    another tool. It’s not about syntax.
    It’s not about expressiveness. It’s
    not about paradigms or models.
    It’s about managing hard
    problems.”

    View Slide

  7. Why Pony?

    View Slide

  8. Why Pony?
    Highly concurrent
    Predictable latency demands
    Data Safety
    “Batteries” not required

    View Slide

  9. Highly Concurrent

    View Slide

  10. Highly Concurrent
    Actor model
    Async messaging
    Work stealing scheduler
    Mechanical sympathy

    View Slide

  11. Predictable latencies

    View Slide

  12. Predictable Latencies
    No “stop the world” GC
    Per-actor heaps
    Better clustering

    View Slide

  13. Data Safety

    View Slide

  14. Data Safety
    Reference Capabilities

    View Slide

  15. Batteries not required

    View Slide

  16. Batteries not required
    Small Standard Library
    C-FFI

    View Slide

  17. Results

    View Slide

  18. Results
    18 month jumpstart for “free”
    Excellent performance
    More confident refactoring
    Some pain

    View Slide

  19. Pain

    View Slide

  20. Pain
    Pre-1.0
    Compiler bugs
    Breaking changes
    Limited tooling
    Runtime knowledge required

    View Slide

  21. Is Pony right for you?

    View Slide

  22. Is Pony right for you?
    You have a hard concurrency
    problem
    You aren’t reliant on a lot of
    existing libraries
    You are willing to write “most
    everything” from scratch
    Yes, if…

    View Slide

  23. “Fintech” Questions

    View Slide

  24. “Fintech” Questions
    How do I shard my data?
    How do I do priority queues?
    How do I only process the most
    recent messages?

    View Slide

  25. Takeaways…
    Pony has a powerful, data-race free,
    concurrency-aware type system

    The Pony runtime can help you solve
    hard concurrency problems

    You might be able to use Pony for
    fintech in production now

    View Slide

  26. Trash Day paper:
    https://www.usenix.org/system/files/conference/hotos15/
    hotos15-paper-maas.pdf
    ORCA paper:
    https://www.ponylang.org/media/papers/OGC.pdf

    View Slide

  27. @seantallen
    www.monkeysnatchbanana.com
    @SendenceEng
    www.sendence.com
    @ponylang
    www.ponylang.org
    #ponylang on freenode

    View Slide