Schedule

Back
Dmitry Petrashko
Dmitry Petrashko
@DarkDimius

Dmitry works on developer productivity at Stripe, making it easy to confidently write maintainable, fast, and reliable code at Stripe by improving language, core abstractions, tools and educational materials. Before this, Dmitry worked on Scala compiler and parallel collection library.

Paul Tarjan
Paul Tarjan
@ptarjan

Lifelong nerd and engineer. Nowadays he works at Stripe mostly on developer productivity and infrastructural components like rate limiters, core abstractions, large code refactors and language design. In the past he helped build HHVM and Hack at Facebook, worked on the Open Graph and changed your search results to not just be 10 blue links.

Nelson Elhage
Nelson Elhage
@nelhage

Nelson is a software engineer who enjoys working and learning at any and all levels of the stack. He currently works on developer productivity at Stripe. Previously, he's worked on live kernel patching at Ksplice, built super-fast code search for https://livegrep.com/, and generally dived deep into systems and the Linux kernel.

A practical type system for Ruby at Stripe.

At Stripe, we believe that a typesystem provides substantial benefits for a big codebase. They :

  • are documentation that is always kept up-to-date;
  • speed up the development loop via faster feedback from tooling;
  • help discover corner cases that are not handled by the happy path;
  • allow building tools that expose knowledge obtained through type-checking, such as "jump to definition".

We have built a type system that is currently being adopted by our Ruby code at stripe. This typesystem can be adopted gradually with different teams and projects adopting it at a different pace. We support And and OrTypes as well as basic generics. Our type syntax that is backwards compatible with untyped ruby.

In this talk we describe our experience in developing and adopting a type system for our multi-million line ruby codebase. We will also discuss what future tools are made possible by having knowledge about types in the code base.