baruco 2014 you should have been therefiles.meetup.com/13745472/2014-09-18 baruco.pdfbaruco 2014 —...
TRANSCRIPT
![Page 1: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/1.jpg)
Baruco 2014—
You should have been there
David Vrensk2014-09-18
![Page 2: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/2.jpg)
Jeremy Walker
• Avoid the monorail
• Huge gem files, collisions
• Pubsub! (gem install propono)
• AWS sns sqs
• Bit.ly/baruco14
![Page 3: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/3.jpg)
Matz: mRuby• New devices. Small, but strong CPUs,
much memory.
• Cruby not good for embedded. Too big. Too much posix.
• Jruby too much Java. JavaME is not enough java.
• Japanese gov grant 2009-2011
![Page 4: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/4.jpg)
Matz...
• Copied lua api
• Incremental generational GC.
• C99
• MRI 1.9-compatible syntax-wise
• Sinatic—Sinatra clone
• Micro satellites! Mruby in space!
![Page 5: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/5.jpg)
Piotr Szotkowski: Standard library
• Struct
• Yaml/store
• Heredocs in method calls
• Webrick
• Gserver (TCP)
• Enumerable#flat_map
• abbrev
• module_function
• Enum.combination
• DRb
• Ipaddr
• Rinda!
![Page 6: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/6.jpg)
Piotr Szotkowski...
• Benchmark
• Why is stdlib Integer#prime? slower than a naive implementation?
• Read enumerable.rb, and again.
• End of line (stdlib blog posts)
![Page 7: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/7.jpg)
Pat Shaughnessy: active record
• Generating SQL
• Executing SQL
• The b-tree algorithm
• Arel. E.F. Codd. AST. Visitor pattern.
• Lehman & Yao: efficient b-trees
• Dive deep, have fun.
![Page 8: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/8.jpg)
Emily Stolfo: backwards compatible APIs
• Innovation and stability are at odds in the ruby community
• Reactions to breakage:
• not part of the official API
• my bad, sorry
• yank, re-release
![Page 9: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/9.jpg)
Emily Stolfo...
• Configurability and stability are at odds
• Api wrapper vs native api
• Do 3 things:
• simple api
• clear communication
• semver
![Page 10: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/10.jpg)
Emily Stolfo...
• Changelogs! www.keepachangelog.com
• Be nice. Tell ppl you don't support 1.8.7 even if 1.8.7 isn't supported in itself.
• Ppl avoid semver because it's holding them back. Innovation is more important to rubyists.
![Page 11: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/11.jpg)
José Tomas Albornoz: Twitch plays Pokemon• Java robot lib to send keystrokes. Latency.
• tom7.org/mario
• Writing a new emulator. Mimey.
• Commit and learn. Conference-driven development!
• Irresponsible ruby: Too clever or interesting to deploy on your day job.
• Learned how computers work.
![Page 12: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/12.jpg)
Leon Gersing: Keep software weird
• Meaning is derived through experience
![Page 13: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/13.jpg)
Ryan Levick: Type safety in ruby
• Types are better than tests because math
• Compiler less likely to be buggy than your tests
• Save your tests for business logic
![Page 14: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/14.jpg)
Lightning talks• Yorick Petersén
• Oga - new XML parser, made to be enjoyable
• Tom Stuart (not evil)
• Burrows-wheeler transform
• Philip Nash
• My code is more popular than me
• Chuck Norris bot, Vin Diesel bot
![Page 15: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/15.jpg)
Brian Shirai: Types as premature optimisation
• Static types. We don't need them. And we're not good at them.
• Making a sandwich: What would be a purely functional recipe to make a sandwich?
![Page 16: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/16.jpg)
Brian Shirai...
• We learn not from own failure, not from success of others, but from failure of others.
• Card trick: We're bad at types.
![Page 17: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/17.jpg)
Brian Shirai...
• The power of interoperability: why objects are inevitable
• Messages are the core of objects.
• Let functions have types. We can handle that.
![Page 18: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/18.jpg)
Erik Michaels-Ober: Writing fast Ruby
• Don Knuth: a 12% improvement, easily obtainable, should be done based on experience from other engineering disciplines. (December 1974)
![Page 19: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/19.jpg)
sferik...
• Levels: design, source, build, compile, runtime
• Algos, fast ruby, build flags, all but MRI, GC malloc limit
![Page 20: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/20.jpg)
sferik...
• Knuth again: programmers are bad at guessing what's slow.
• Benchmark
• Benchmark/ips runs a certain time instead of n iterations
![Page 21: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/21.jpg)
sferik...
• Activesupport symbol-to-proc was slower than blocks so rails stopped using it internally. SymToProc in ruby is faster than blocks.
• Flat_map 4.5x faster than map+flatten but rubinius implemented it as map+flatten.
![Page 22: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/22.jpg)
Jason R Clark: Spelunking in ruby
• Collecting tricks and tools
• JasonRClark.com/debug
![Page 23: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/23.jpg)
Evan Phoenix: Services, services,
• What is micro service?
• Single data type.
• Or a single operation.
• Or logical group (email).
![Page 24: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/24.jpg)
Evan Phoenix...
• Benefits:
• the "don't break my shit" rule.
• Separate velocity vectors.
• You can't break encapsulation on someone else's machine.
• Plenty of pitfalls
![Page 25: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/25.jpg)
Evan Phoenix...
• Shared Model Pain. Don't share AR code between projects.
![Page 26: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/26.jpg)
Evan Phoenix...
• Now deployment becomes a mess. Use one solution for all. Force them to use the same solution.
• Config needs to be centralised. Stop using .yml, move to env vars. 12factor rules.
![Page 27: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/27.jpg)
Evan Phoenix...
• Do a fire drill once a month. Pretend. Check things. There will be many places to check. Practice.
• Expect failure. Gracefully degrade. Use back pressure: returning errors better than crashing.
![Page 28: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/28.jpg)
Evan Phoenix...
• How and what. Don't argue over how x talks to y. One convention for all.
• ... But what about synchronous/asynchronous?
• How? RPC, REST, or message passing
![Page 29: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/29.jpg)
Evan Phoenix...
• Enables multi-lang. But every new language needs the same tools as the others: logging, etc.
• Build that part first, or you won't have it when you need it.
![Page 30: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/30.jpg)
Evan Phoenix...
• Break up when you reach the Human Cognitive Mass threshold.
• Every sufficiently complex problem domain will hit the HCM threshold.
• Team HCM is smaller than individual HCM. Because communication.
![Page 31: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/31.jpg)
Evan Phoenix...
• Services should be the right size for your team.
• Tooling matters
• Sacred cows make the best hamburgers says Evan Phoenix.
![Page 32: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/32.jpg)
Tom Stuart: Refactoring ruby with monads
• Book: understanding computation
• Gh/tomstuart/monads
![Page 33: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/33.jpg)
Matt Aimonetti: Go auth urself
• story time
![Page 34: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/34.jpg)
Evil Tom Stuart: Smalltalk, lisp, shell
• opinion time
![Page 35: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/35.jpg)
Julian Cheal: Dancing with robots
• show time
![Page 36: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/36.jpg)
Will watch again
• Leon Gersing
• Evan Phoenix
• (good) Tom Stuart
![Page 37: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/37.jpg)
All of them• JEREMY WALKER—Avoid the
monorail• YUKIHIRO MATSUMOTO—mruby:
AltRuby• PIOTR SZOTKOWSKI—Standard
Library, Uncommon Uses• PAT SHAUGHNESSY—Twenty
Thousand Leagues Under ActiveRecord
• EMILY STOLFO—Release Responsibly
• JOSÉ TOMÁS ALBORNOZ—How I built my own Twitch-Plays-Pokémon
• LEON GERSING—Keep Software Weird
• RYAN LEVICK—A Dangerous Game: Safety in Ruby
• BRIAN SHIRAI—Types As Premature Optimization
• ERIK MICHAELS-OBER—Writing fast Ruby
• JASON R. CLARK—Spelunking in Ruby
• EVAN PHOENIX—Services, Services, Everywhere!
• TOM STUART—Refactoring Ruby with Monads
• MATT AIMONETTI—Go Auth Urself• EVIL TOM STUART—Smalltalk, Lisp,
Bash: Three Interesting Languages• JULIAN CHEAL—Dancing with
Robots
![Page 38: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/38.jpg)
Retrospective
• Format (facts + opinions)
• Content
• facts
• opinions
• Level?
• Too long? Too short?
![Page 39: Baruco 2014 You should have been therefiles.meetup.com/13745472/2014-09-18 Baruco.pdfBaruco 2014 — You should have been there David Vrensk 2014-09-18](https://reader033.vdocument.in/reader033/viewer/2022042112/5e8e507eb0ffc4314f2293f4/html5/thumbnails/39.jpg)
Thank you!David Vrensk
We’re changing e-commerce in Spain forever