wroc_love.rb 2017 in a nutshell
A bit about me
- I <3 ruby, devops and whiskey
- all in for open-source software
- quality and automation are very important
- i don't have a blog
- i do consulting
comprehensive platform for insightful code analysis
- March 17-19th 2017, Wrocław Poland
- 10 speakers, 10 talks, 2 panels
- after parties ;)
when I was preparing this talk
I realized that I don't like doing this kind of talks
KARAFKA - PLACE WHERE RUBY, RAILS AND KAFKA MEET TOGETHER
Maciej Mensfeld
- kafka - is used for building real-time data pipelines and streaming apps
- karafka - microframework which was designed to simplify Kafka based applications development
- https://kafka.apache.org/
- https://github.com/zendesk/ruby-kafka
- https://github.com/karafka/karafka
MACHINE LEARNING FOR THE RESCUE
Mariusz Gil
Machine learning is not a single run of an algorithm. It's a process.
ML process
- define a problem
- gather your data
- understand your data
- prepare data for ml
- select & run algo(s)
- tune algo(s) parameters
- select final model
- validate final model
list of ruby gems for ML/DS http://gems.sciruby.com
3.2 was released
A bit of numbers
- 3 026 876 bytes of code
- 0.63% monthly growth
- 104594 lines of code
- 75.9% code in Ruby
- 4 guys handling more than 92% of code (last month)
- 1 guy with > 50% of current code base (total) ownership - Sean Schofield
Spree uses Rubocop!
But it doesn't! :(
AccessorMethodName ActionFilter Alias ArrayJoin AsciiComments AsciiIdentifiers Attr BlockNesting CaseEquality CharacterLiteral ClassAndModuleChildren ClassLength ClassVars ColonMethodCall CommentAnnotation CyclomaticComplexity Delegate DeprecatedHashMethods Documentation DoubleNegation EachWithObject EmptyLiteral Encoding EvenOdd FileName FlipFlop SpecialGlobalVars StringLiterals VariableInterpolation TrailingCommaInLiteral
But it doesn't! :(
FormatString GlobalVars GuardClause IfUnlessModifier IfWithSemicolon InlineComment Lambda LambdaCall LineEndConcatenation MethodLength ModuleFunction NegatedIf NegatedWhile Next NilComparison Not NumericLiterals OneLineConditional OpMethod ParameterLists PercentLiteralDelimiters PerlBackrefs Proc RaiseArgs RegexpLiteral SelfAssignment SingleLineBlockParams SingleLineMethods SignalException
But it doesn't! :(
TrailingCommaInArguments TrivialAccessors VariableInterpolation WhenThen WhileUntilModifier WordArray AmbiguousOperator AmbiguousRegexpLiteral AssignmentInCondition ConditionPosition DeprecatedClassMethods ElseLayout HandleExceptions InvalidCharacterLiteral LiteralInCondition LiteralInInterpolation Loop ParenthesesAsGroupedExpression RequireParentheses UnderscorePrefixedVariableName Void
So what would happen with a non-agressive Rubocop config?
(with Rubocop Rspec and Rubocop Rails)
THE OVERNIGHT FAILURE
Sebastian Sogamoso
Responsible Rails - Become the responsible Rails developer
- http://blog.arkency.com/responsible-rails/
- for free with MAKE_RUBY_GREAT_AGAIN code
- don't know if it's good, but it's for free ;)
FAULT TOLERANCE IN RUBY
Hubert Łępicki
Semian
https://github.com/Shopify/semian
- circuit breaker
- ready to use adapters (mysql, redis, net/http)
- fail fast philosophy
- works with Ruby / OS processes (but NOT threads)
- uses Unix IPC to synchronize
- modifies behaviors of third party libs
Celluloid
https://github.com/celluloid/celluloid
- turns objects into actors
- allows linking actors
- allows supervision/restarts
Ruby 3.0.0 - Guilds
http://www.atdot.net/~ko1/activities/2016_rubykaigi.pdf
http://slides.com/hubertlepicki/fault-tolerance-in-ruby
AUTOMATED TYPE CONTRACTS GENERATION FOR RUBY
Valentin Fondaratov
I'm sorry I don't remember what it was about
Fortunately there are slides
https://speakerdeck.com/valich/automated-type-contracts-generation-for-ruby
RUBY vs ELIXIR
BINDINGS IN RUBY - BEHIND THE MAGIC OF BLOCKS
Piotr Szmielew
https://speakerdeck.com/esse/bindings-in-ruby-behind-the-magic-of-blocks
http://charytatywni.allegro.pl/en/listing?sellerId=9300675
THE BABEL FISH IS DATA: A CASE STUDY
Norbert Wójtowicz
It was good so hopefully the video will be up shortly
Clojure and ClojureScript
#clojure and #clojurescript stealing best ideas from other langs
WE ALL BUILD DISTRIBUTED SYSTEMS
Maciej Rząsa
https://speakerdeck.com/mrzasa/we-all-make-distributed-systems-wroc-love-dot-rb-2017
PREDICTING PERFORMANCE CHANGES OF DISTRIBUTED APPLICATIONS
Wojciech Rząsa
https://speakerdeck.com/wrzasa/predicting-performance-changes-of-distributed-applications
PANEL - HOW TO SURVIVE IN THE JAVASCRIPT WORLD AS A RUBY PROGRAMMER AND STAY SANE
CONCURRENTRUBY V1.1.0: NEW FRAMEWORK, NEW WAY OF WRITING CONCURRENT CODE!
Petr Chalupa
http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Promises.html
Applications close April 3, 2017 at 18:00 (CEST)