RubyConf 2018 Day One

Ruby Conf 2018 Day One


Opening Key Note by Matz - The Power of The Community

Programming languages

History

2018

Community

Bug reports and Community Contributions

Features from community contributions

Feeding the community

Hype cycle

Hype cycle

Ruby’s role in twitter development

You do your part

We are working on Ruby 3

List of Ruby 2.6 features

Future

The games developers play - Andy Caroll

Psychology

Roles

Designing Engineering Teams

Just hire great engineers

The Venn diagram of You and them

A digression into the history of aviation

Fatal airline accidents per year 1946-2017 decreased because they figured out

  1. what do you need to do to make flying safe
  2. who are the people you need
  3. how do you train them

A digression into the history of medicine

  1. division of responsibilities and roles
  2. teaching hospitals

“Let’s rewrite this patient in React”

You need a variety of skills

Family feud - twitter polls

Yes, You Should Provide a Client Library For Your API - Daniel Azuma

The role of a client library

Client example

client = Google::Cloud::Tranlsate.new(
  project_id: 'my-project',
  credentials: 'path/to/keyfile.json'
)

transation = client.translate('foobar')

Use Ruby abstractions

Handle errors, because error handling is annoying, token might expire, quota errors

Improve safety/Security

Improve perfomance

Client libraries should provide instrumentation

Inteface Description Language (IDL)

Examples:

  1. OpenAPI
  2. Swagger
  3. GRPC/Protobuf

Early Google Libraries

                     IDL
                       \
Metaprogramming Engine ---> Generated Class

Client libaries

Generated Ruby files

                IDL
                  \
Generator Engine ---> Generated Ruby Files (and documentation)
Code Generator        Client Libary

How do I get started?

  1. Choose a spec standard - for example protobuf/GRPC, or openAPI
  2. Write an API description
  3. Invoke a code generator
  4. Customize the generator

Additional resources

Yes, you should provide a client library for your API! (RubyConf 2018)

Uncoupling systems - Jeremy Hanna

Case study

Anti-pattern 1: large modules

Anti-pattern 2: Not being open to change

Anti-pattern 3 - not discussing trade offs

Books

Distributed System by Marteen Van Steen - warning it’s very dry. take aways

Designing Data-Intensive Applications by Martin Kleppmann. take aways

Method 1

f(g(h(x)))

Method 2 - Make changes that are not dependent on each preceeding functions

x
f(x) g(x) h(x)

Summary

Building for Gracious Failure - James Thompson

Return what we can

Accept what we can

Trust carefully

Service A - Service B - Service C
500         500         500

Expect failure

Q&A

Closing Key Notes - Bianca Escalante

The people and ideas that we leave behind and what are the costs of doing that

Incorrect:

Solving human inconveniences > Solving society problems

What we learned about the Ruby community

  1. The Ruby community was punk rock - Ruby was something born out of frustration with the prevalent language
  2. The Ruby community valued feelings - there was a desire to encourage developer happiness
  3. The Ruby community was friendly - MINASWAN

The criticisms about the Ruby community

  1. what constitues nice in own region might be mean the same in another region or community
  2. despite the Ruby community’s best efforts, it wasn’t all cats riding on unicorn down a rainbow slide
  3. open source can be put to bad use because it’s created by people, not all of it is created for good. We need to get comfortable having these ‘negative’ conversations.

Addressing the problems

  1. Addressing the problems in your communities does not make you ‘negative’ or ‘toxic’
  2. Do most folks in my community come from similar backgrounds as me? If not, reach out and diversify for their perspectives
  3. If you cannot hire people, consider volunteering and mentoring
  4. It’s important that you take a look at your project, your workplace, you community, and think critically about how to improve the culture.

Foster an inclusive culture

  1. Who have I not heard from?
  2. How do I create a safe environment for others to speak up?
  3. Listen to others, pause when you’re called out, refrain from centering yourself

Reference to Bianca’s slides for volunteering opportunities