+ - 0:00:00
Notes for current slide
Notes for next slide

zen and the art of convincing your company to use Rust

motocycle

1 / 84

hi i'm @ag_dubs

ag_dubs

2 / 84

npm

3 / 84

npm

4 / 84

5 / 84

npm-stats

6 / 84

modulecounts

7 / 84

npm is the

LARGEST PACKAGE REGISTRY IN THE WORLD

8 / 84

9 / 84

npm uses rust

10 / 84

how do i convince my company to use rust?

11 / 84

The number of rational hypotheses that can explain any given phenomenon is infinite.

Robert M. Pirsig, Zen and the Art of Motorcycle Maintenance: An Inquiry Into Values

12 / 84

10 tips

(that may or may not work for you but will almost definitely make you a better rustacean)

13 / 84

tip 1

don't rewrite your software in rust

14 / 84

tip 1

don't completely rewrite your software in rust

15 / 84

complete rewrites are very often unsuccessful

16 / 84

A complex system that works is invariably found to have evovled from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a simple system.

john gall

doctor

17 / 84

cheating gall's law

by cj silverio

architecture

18 / 84

proxy

19 / 84

microservices

microservices

20 / 84

tip 2 show up with code

21 / 84

tokio

22 / 84

writing a registry follower in rust

23 / 84

follower

24 / 84

follower

25 / 84

follower

26 / 84

jsfollower

27 / 84

tip 3 don't sell

28 / 84

bashing other languages makes everyone look bad

29 / 84

you don't have to control someone else's first experience of rust

30 / 84

not everyone is gonna love everything about rust

31 / 84

not everyone is gonna love everything about rust

right away

32 / 84

#![allow(bad_style)]

33 / 84

tip 4 sell sell sell

advice

34 / 84

slack

35 / 84

slack

36 / 84

37 / 84

38 / 84

tip 5 the hard part of programming isn't programming

39 / 84

docs

  • The Rust Reference

  • The Rust Book

  • The Rust Book (NEW AND UPDATED)

  • The Nomicon

docs

40 / 84

tooling

  • cargo

  • rustup

  • rustfmt

  • clippy

tools

41 / 84

community

  • #rust-beginners on mozilla IRC

  • exercism.io

  • RustConf, RustFest, RustBeltRust

community

42 / 84

docs, community, and tooling may seem easy and common

43 / 84

docs, community, and tooling may seem easy and common

they are neither

44 / 84

tip 6 the hard part of programming is programming

45 / 84

selling something on technical merit is easy

46 / 84

tip 7 be prepared for things to change

47 / 84

problem:

our node service logs are full of runtime errors

parsing them is slow

48 / 84

oh no my rust parser is 2x slower than the js version

49 / 84

stdin-lock

50 / 84

[0; 1024];

51 / 84

i just fully expected to rust my way into 50% perf over js. sometimes i forget that v8 is pretty darn fast.

52 / 84

You are never dedicated to something you have complete confidence in. No one is fanatically shouting that the sun is going to rise tomorrow. They know it's going to rise tomorrow. When people are fanatically dedicated to political or religious faiths or any other kinds of dogmas or goals, it's always because these dogmas or goals are in doubt.

Robert M. Pirsig, Zen and the Art of Motorcycle Maintenance: An Inquiry Into Values

53 / 84

i thought i'd be selling rust because of its speed

54 / 84

i thought i'd be selling rust because of its speed

... but i'm selling rust because of its safety

55 / 84

making rust go fast is actually kinda hard

sonic

56 / 84

making rust correct is pretty simple!

57 / 84

tip 8 be prepared for things to stay the same

58 / 84

boring code is my favorite code

59 / 84

just because you started using rust doesn't mean everything will change

60 / 84

just because you started using rust doesn't mean everything will change

in fact, it's better if it doesn't!

61 / 84

science

scientific method

62 / 84

only change one thing at a time so you can measure rust's impact

measure

63 / 84

only change one thing so you don't burn everyone out

burnout

64 / 84

git-deploy-rust

66 / 84

we deploy rust using nearly the exact same process we deploy node

67 / 84

tip 9 have a problem to solve

sherlock

68 / 84

trashfire

(this should be easy because all software is terrible)

69 / 84

big numbers are big

70 / 84

over the last year

70 billion

downloads occured

https://twitter.com/seldo/status/845094537752014852. 23 March 2017.

71 / 84

storefile transforms

73 / 84

follower

74 / 84

find a problematic part of your product and try rewriting it in rust

75 / 84

tip 10 learning curves are a blessing in disguise

76 / 84

this is the really fun part about learning new things. i still have the patience to do any number of silly things

77 / 84

learning something new can be energizing

78 / 84

learning something new can be energizing

even if (or maybe because!) it is hard

79 / 84

summary

  1. don't rewrite your software in rust
  2. show up with code
  3. don't sell
  4. sell sell sell
  5. the hard part of programming is not programming
  6. the hard part of programming is programming
  7. be prepared for change
  8. be prepared for things to stay the same
  9. have a problem to solve
  10. learning curves are a blessing in disguise
80 / 84

If you’re going to repair a motorcycle, an adequate supply of gumption is the first and most important tool. If you haven’t got that you might as well gather up all the other tools and put them away, because they won’t do you any good.

Robert M. Pirsig, Zen and the Art of Motorcycle Maintenance: An Inquiry Into Values

81 / 84

gumption

'ɡʌm(p)ʃ(ə)n/

noun, informal

shrewd or spirited initiative and resourcefulness.

synonyms: initiative, resourcefulness, enterprise, imagination, imaginativeness, ingenuity, inventiveness; class: middle, center

82 / 84

go forth and spread rust!

83 / 84

thanks!

@ag_dubs, bit.ly/rustfest-2017

motorcycle

84 / 84

hi i'm @ag_dubs

ag_dubs

2 / 84
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow