towards tooling; a look at what is missing from the ruby toolbox
DESCRIPTION
You can usually judge the maturity of a programming language ecosystem by the breadth of its tooling. For example, Java has a plethora of IDEs that each, in turn, have many well maintained refactoring and code quality plugins (like FindBugs and PMD). C/C++ is equally well established in this space. Even JavaScript is becoming well represented, with a number of static code analyzers and language supersets (like Dart and TypeScript) aimed at improving tooling in the language. But where is Ruby in all of this? This talk will shed some light on the existing tools available in the Ruby world as well as some new tools just starting to be built out in the areas of static analysis, formal verification, and code quality checking. We will look at what kind of tools the Ruby community is good at building, what kind of tools we are bad at, and most of all, some of the tooling we should be working on to really improve our ecosystem and drive more developers to this wonderful language.TRANSCRIPT
![Page 1: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/1.jpg)
Towards Toolingwhat is missing
from our toolbox?Loren Segal
@lsegal
Friday, November 8, 13
![Page 2: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/2.jpg)
Are Rubyists good at testing because they
have good tools?Friday, November 8, 13
![Page 3: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/3.jpg)
Do Rubyists have good tools
because they are good at testing?
Friday, November 8, 13
![Page 4: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/4.jpg)
Do Rubyists have good tools
because they are good at testing?
Friday, November 8, 13
![Page 5: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/5.jpg)
Friday, November 8, 13
![Page 6: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/6.jpg)
Tools are important
Friday, November 8, 13
![Page 7: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/7.jpg)
We have good tools
Friday, November 8, 13
![Page 8: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/8.jpg)
...sometimes.
Friday, November 8, 13
![Page 9: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/9.jpg)
This talk is about the
not-so-good tools
Friday, November 8, 13
![Page 10: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/10.jpg)
GoalsFriday, November 8, 13
![Page 11: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/11.jpg)
1. Introduce
different toolsFriday, November 8, 13
![Page 12: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/12.jpg)
2. Find out which
tools we are missing
Friday, November 8, 13
![Page 13: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/13.jpg)
3. Write these
tools plz thx!Be a garbage collector
Friday, November 8, 13
![Page 14: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/14.jpg)
Note:
GoogleTOOL NAME + LANGUAGE
You should find the tools referenced in this talk
Friday, November 8, 13
![Page 15: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/15.jpg)
Kinds of Tools
Friday, November 8, 13
![Page 16: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/16.jpg)
Deployment / OpsDocumentation
TestingVisualization
DebuggingLinting
Static Analysis
High Level
Low Level
Friday, November 8, 13
![Page 17: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/17.jpg)
Visualization
Friday, November 8, 13
![Page 18: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/18.jpg)
Some ofthe most
important toolsare visualization tools
Friday, November 8, 13
![Page 19: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/19.jpg)
Know what your code
is doingFriday, November 8, 13
![Page 20: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/20.jpg)
Thread in a sealed box.Is it dead or alive?
Friday, November 8, 13
![Page 21: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/21.jpg)
Visual Studio
Friday, November 8, 13
![Page 22: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/22.jpg)
Visual Studio
Friday, November 8, 13
![Page 23: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/23.jpg)
XCode
Friday, November 8, 13
![Page 24: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/24.jpg)
VisualVM
Friday, November 8, 13
![Page 25: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/25.jpg)
Discoverability
Friday, November 8, 13
![Page 26: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/26.jpg)
Call references
Implementors ECLIPSE
Friday, November 8, 13
![Page 27: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/27.jpg)
Not just IDEs
Friday, November 8, 13
![Page 28: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/28.jpg)
I’ll prove it...
Friday, November 8, 13
![Page 29: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/29.jpg)
Firebug
Friday, November 8, 13
![Page 30: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/30.jpg)
Do you remember web development before Firebug?
Friday, November 8, 13
![Page 31: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/31.jpg)
Before: no visibility.
Friday, November 8, 13
![Page 32: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/32.jpg)
Ember Inspector
Friday, November 8, 13
![Page 33: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/33.jpg)
SmalltalkFriday, November 8, 13
![Page 34: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/34.jpg)
Friday, November 8, 13
![Page 35: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/35.jpg)
InherentlyVisual
Friday, November 8, 13
![Page 36: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/36.jpg)
Where isRuby viz?
Friday, November 8, 13
![Page 37: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/37.jpg)
RubyMine
Friday, November 8, 13
![Page 38: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/38.jpg)
Profilers?Friday, November 8, 13
![Page 39: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/39.jpg)
memprofJoe Damato
github/ice799/memprofFriday, November 8, 13
![Page 40: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/40.jpg)
perftools.rb
Friday, November 8, 13
![Page 41: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/41.jpg)
NetBeans / JRuby
Friday, November 8, 13
![Page 42: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/42.jpg)
Use theJVM
Friday, November 8, 13
![Page 43: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/43.jpg)
Lintng��
Friday, November 8, 13
![Page 44: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/44.jpg)
Lintdivide by zero: checkinitialized vars: check
...style: check (last!)
Friday, November 8, 13
![Page 45: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/45.jpg)
Ruby?
Friday, November 8, 13
![Page 46: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/46.jpg)
Reek/Flog/FlayDoes: detect code smellsDoes not: find common errors
Friday, November 8, 13
![Page 47: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/47.jpg)
Assumption:Pretty code iscorrect code
Friday, November 8, 13
![Page 48: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/48.jpg)
Friday, November 8, 13
![Page 49: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/49.jpg)
Ugly.Not “correct”.
Friday, November 8, 13
![Page 50: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/50.jpg)
github.com/lsegal/my_fake_project
Friday, November 8, 13
![Page 51: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/51.jpg)
PS. I ♡Code
ClimateFriday, November 8, 13
![Page 52: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/52.jpg)
Understandyour tools
Friday, November 8, 13
![Page 53: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/53.jpg)
Code Climate does not replace testing
Friday, November 8, 13
![Page 54: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/54.jpg)
ruby-lintYorick Peterse
but it’s newFriday, November 8, 13
![Page 55: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/55.jpg)
Nothing comes
standardFriday, November 8, 13
![Page 56: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/56.jpg)
Other languages?
Friday, November 8, 13
![Page 57: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/57.jpg)
JSHint (JavaScript)pylint (Python)
FindBugs (Java)FxCop (C#)
Friday, November 8, 13
![Page 58: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/58.jpg)
Widely used.
Friday, November 8, 13
![Page 59: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/59.jpg)
Why notRuby?
Friday, November 8, 13
![Page 60: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/60.jpg)
Friday, November 8, 13
![Page 61: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/61.jpg)
StaticAnalysis
lint++Friday, November 8, 13
![Page 62: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/62.jpg)
is ahuge field
Friday, November 8, 13
![Page 63: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/63.jpg)
Friday, November 8, 13
![Page 64: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/64.jpg)
Types of “static analysis”- Defect Finding
- Memory Checking / Fuzz Testing
- Extended Static Checking
- Model Checking / Data Flow Analysis
- Symbolic ExecutionFriday, November 8, 13
![Page 65: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/65.jpg)
Defect Finding
Friday, November 8, 13
![Page 66: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/66.jpg)
is basically lint,
Friday, November 8, 13
![Page 67: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/67.jpg)
but with less emphasis on syntax.
Friday, November 8, 13
![Page 68: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/68.jpg)
The Usual Suspects
Friday, November 8, 13
![Page 69: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/69.jpg)
BrakemanJustin Collins
brakemanscanner.org(Ruby on Rails)
Friday, November 8, 13
![Page 70: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/70.jpg)
Finds common flawsin Rails code
XSS, SQL injection, mass assignment
Friday, November 8, 13
![Page 71: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/71.jpg)
Friday, November 8, 13
![Page 72: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/72.jpg)
Static detection of security vulnerabilitiesin scripting languages
https://www.usenix.org/legacy/event/sec06/tech/full_papers/xie/xie_html/
Friday, November 8, 13
![Page 73: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/73.jpg)
Fuzz Testing
Friday, November 8, 13
![Page 74: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/74.jpg)
garbage in...
Friday, November 8, 13
![Page 75: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/75.jpg)
Lots of tools.
C, Java, JS, Python, etc.
Friday, November 8, 13
![Page 76: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/76.jpg)
Lots of papers.
Friday, November 8, 13
![Page 77: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/77.jpg)
“Automated Whitebox Fuzz Testing”
Microsoft Research(used in SAGE)
http://research.microsoft.com/en-us/um/people/pg/public_psfiles/ndss2008.pdf
Friday, November 8, 13
![Page 78: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/78.jpg)
What about us?
Friday, November 8, 13
![Page 79: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/79.jpg)
HeckleRyan Davis, Kevin Clark
Friday, November 8, 13
![Page 80: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/80.jpg)
Friday, November 8, 13
![Page 81: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/81.jpg)
MutantMarkus Schirp
github/mbj/mutantFriday, November 8, 13
![Page 82: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/82.jpg)
We could use a real fuzz testing tool.
Friday, November 8, 13
![Page 83: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/83.jpg)
FuzzBert?Martin Bosslet
github/krypt/FuzzBertFriday, November 8, 13
![Page 84: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/84.jpg)
lots of papers out therewith algorithms to implement
Friday, November 8, 13
![Page 85: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/85.jpg)
LET’S GET
Friday, November 8, 13
![Page 86: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/86.jpg)
Symbolic Execution
Friday, November 8, 13
![Page 87: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/87.jpg)
Run your codewith no immediate values
Friday, November 8, 13
![Page 88: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/88.jpg)
Similar to Extended Static Checking
but...
Friday, November 8, 13
![Page 89: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/89.jpg)
Contracts not required
and
Can tell you which inputs generated valid or invalid state
Friday, November 8, 13
![Page 90: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/90.jpg)
Think:
Automatic Test Case Generation
Friday, November 8, 13
![Page 91: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/91.jpg)
// @example pow(2, 8) == 256 int pow(int x, int n) { int v[32] = {x}, result = 0; for (int i = 1; i < n; i++) { v[i] = x * v[i-1]; } return v[n-1]; }
Friday, November 8, 13
![Page 92: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/92.jpg)
SymExe report:
x=1,n=5,result=1x=2,n=8,result=256x=1,n=0,error: array out of bounds ← x=1,n=33,error: array out of bounds ←
Friday, November 8, 13
![Page 93: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/93.jpg)
// @example pow(2, 8) == 256 // @requires n > 0 // @requires n < 32 int pow(int x, int n) { int v[32] = {x}, result = 0; for (int i = 1; i < n; i++) { v[i] = x * v[i-1]; } return v[n-1]; }
Friday, November 8, 13
![Page 94: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/94.jpg)
Tools?
Friday, November 8, 13
![Page 95: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/95.jpg)
KLEE (LLVM)Kudzu (JavaScript)
Kiasan (Java, SPARK)
Friday, November 8, 13
![Page 96: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/96.jpg)
Nothing for Ruby*
(*) “Automatic Program Verification and Test Case Generation of Ruby Programs”
Friday, November 8, 13
![Page 97: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/97.jpg)
Ruby doesn’t really have a scientific community.
Friday, November 8, 13
![Page 98: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/98.jpg)
Chicken and egg.
Friday, November 8, 13
![Page 99: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/99.jpg)
Python vs Ruby?Big boy language?
Friday, November 8, 13
![Page 100: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/100.jpg)
RECAP
Friday, November 8, 13
![Page 101: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/101.jpg)
We are greatat testing,
deployment,web frameworks
Friday, November 8, 13
![Page 102: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/102.jpg)
Not so good atvisualization,
linting,static analysis
Friday, November 8, 13
![Page 103: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/103.jpg)
We attractweb developersbecause we have good
web tools
Friday, November 8, 13
![Page 104: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/104.jpg)
Could webuild toolsfor other
communities?science, engineering, math
Friday, November 8, 13
![Page 105: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/105.jpg)
Take responsibility.
Friday, November 8, 13
![Page 106: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/106.jpg)
Great tool ideas arewaiting to be implemented
Friday, November 8, 13
![Page 107: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/107.jpg)
Tons of research papersin fields I mentioned
scholar.google.com
Friday, November 8, 13
![Page 108: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/108.jpg)
I had a whole section on my favourite research papers.
Friday, November 8, 13
![Page 109: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/109.jpg)
Come find me if you want titles.
Friday, November 8, 13
![Page 110: Towards Tooling; A Look at What is Missing From the Ruby Toolbox](https://reader034.vdocuments.site/reader034/viewer/2022051613/54c718054a7959040e8b45d7/html5/thumbnails/110.jpg)
Thank you.
Slides will be linked on Twitter@lsegal
Friday, November 8, 13