RubyConf | São Paulo 2017
Big
Risky
Unknown
Big
Risky
Unknown
Hobby
InvestmentGamble
Big
Risky
Unknown
Hobby
InvestmentGamble
Unknown, Big and Risky
Unknown, Big and Risky
● High level language (Ruby-like) with near-native performance (close to C)
● 5+ years
● 9500 followers in Github
● $2.000 + donations per month from more than 100 organizations and
individuals
● Loved Ruby syntax
● Disliked dynamic typing
Compile ruby code to LLVM
First “real” version of the parser
Drop some self-imposed constraints
My experience of using crystal in production.
1.5 month ago i rewrite our critical ruby service (EventMachine, 2000 SLOC) to crystal
(900 SLOC). It was quite easy, i spend only a week.Service listen on socket and handle
10M/requests per day. It running as daemon and getting-updating values in memory.
Also it listen on http, to render simple Admins, have ~10 coroutines with cron_scheduler
to some updates on memory, and ~20 coroutines with outcoming socket connections.
I don’t want to rewrite it to Go because i need readable code for our Ruby team for easy
maintaining.
Now it running in production for a month without restart. Used 185Mb, peak cpu usage 30%
(ruby daemon leaking memory and restarting every day, peak cpu usage was > 100% (maybe
300%)).
We are quite happy.
[...]
asterite waj bcardiff MakeNowJust kostya RX14
oprypin akzhan
jhass ysbaddaden will yui-knk
PragTob Exilor vegai
bjmllr
Sija
technorama waterlink jreinert
matiasgarciaisaiasdogruyol
adlerhsieh
luislavena
scidom zamith
davydovanton bewlbguilherme porrasrhysd maiha jkicillof
● Release 1.0
● Fundraise
● Improve transparency and communications
● Augment the core team
1. Valid problem, adjacent innovation and fun
2. Start!
3. Show it early
4. Be patient
a. Optimal stopping
5. Share it as “non-finito”
6. Build on communities
7. Enlist Starters, Implementers and Finishers
● Unknown but “Adjacent Innovation”
● Big but Fun
● Risky but “Valid problem”
Big
Risky
Unknown
Valid problem
Fun
Adjacent
innovation
 
Believe in yourself Strawman Experiment mindset
Don’t rush: attack and withdraw
● Decide what’s the max time you have for something
● Spend 1/3 evaluating options and studying the solution space
(don’t settle for any yet)
● Get to work and go with the first thing that is better than what you evaluated
so far.
Share it as “non-finito”
Start
10% of time
1/3 of effort
Implementation
80% of time
1/3 of effort
Finalize
10% of time
1/3 of effort
Effortrequired
Duration of the project
You need Starters, Implementers and Finishers
1. Valid problem, adjacent innovation and fun
2. Start!
3. Show it early
4. Be patient
a. Optimal stopping
5. Share it as “non-finito”
6. Build on communities
7. Enlist Starters, Implementers and Finishers
openredis Fly.io tpberntsenposthumanism Fabio Akita
_TOP 5 SPONSORS_
Me (Nico)
Manas.Tech
Crystal
@nditada
@manastech
@CrystalLanguage

Daring to Try - Crystal Language at RubyConf

  • 1.
    RubyConf | SãoPaulo 2017
  • 2.
  • 3.
  • 4.
  • 5.
  • 7.
  • 8.
    ● High levellanguage (Ruby-like) with near-native performance (close to C) ● 5+ years ● 9500 followers in Github ● $2.000 + donations per month from more than 100 organizations and individuals
  • 9.
    ● Loved Rubysyntax ● Disliked dynamic typing
  • 10.
  • 12.
  • 14.
  • 15.
    My experience ofusing crystal in production. 1.5 month ago i rewrite our critical ruby service (EventMachine, 2000 SLOC) to crystal (900 SLOC). It was quite easy, i spend only a week.Service listen on socket and handle 10M/requests per day. It running as daemon and getting-updating values in memory. Also it listen on http, to render simple Admins, have ~10 coroutines with cron_scheduler to some updates on memory, and ~20 coroutines with outcoming socket connections. I don’t want to rewrite it to Go because i need readable code for our Ruby team for easy maintaining. Now it running in production for a month without restart. Used 185Mb, peak cpu usage 30% (ruby daemon leaking memory and restarting every day, peak cpu usage was > 100% (maybe 300%)). We are quite happy. [...]
  • 16.
    asterite waj bcardiffMakeNowJust kostya RX14 oprypin akzhan jhass ysbaddaden will yui-knk PragTob Exilor vegai bjmllr Sija technorama waterlink jreinert matiasgarciaisaiasdogruyol adlerhsieh luislavena scidom zamith davydovanton bewlbguilherme porrasrhysd maiha jkicillof
  • 18.
    ● Release 1.0 ●Fundraise ● Improve transparency and communications ● Augment the core team
  • 19.
    1. Valid problem,adjacent innovation and fun 2. Start! 3. Show it early 4. Be patient a. Optimal stopping 5. Share it as “non-finito” 6. Build on communities 7. Enlist Starters, Implementers and Finishers
  • 20.
    ● Unknown but“Adjacent Innovation” ● Big but Fun ● Risky but “Valid problem” Big Risky Unknown Valid problem Fun Adjacent innovation
  • 21.
      Believe in yourselfStrawman Experiment mindset
  • 24.
  • 25.
    ● Decide what’sthe max time you have for something ● Spend 1/3 evaluating options and studying the solution space (don’t settle for any yet) ● Get to work and go with the first thing that is better than what you evaluated so far.
  • 26.
    Share it as“non-finito”
  • 28.
    Start 10% of time 1/3of effort Implementation 80% of time 1/3 of effort Finalize 10% of time 1/3 of effort Effortrequired Duration of the project You need Starters, Implementers and Finishers
  • 29.
    1. Valid problem,adjacent innovation and fun 2. Start! 3. Show it early 4. Be patient a. Optimal stopping 5. Share it as “non-finito” 6. Build on communities 7. Enlist Starters, Implementers and Finishers
  • 31.
    openredis Fly.io tpberntsenposthumanismFabio Akita _TOP 5 SPONSORS_ Me (Nico) Manas.Tech Crystal @nditada @manastech @CrystalLanguage