first version of grillrb talk

This commit is contained in:
Torsten Rüger 2019-08-27 17:51:51 +03:00
parent 9e655cc8ca
commit a9fe598a45
13 changed files with 496 additions and 7 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 MiB

View File

@ -9,24 +9,36 @@
@import "./mixins";
@import "./settings";
// ---------------------------------------------
ul.arr li{
list-style: none;
margin-left: -30px;
&:before{
color: #b5e853;
content: ">> ";
}
}
.left {
text-align: left;
}
// Include theme-specific fonts
// @import url(../../lib/font/source-sans-pro/source-sans-pro.css);
.reveal section img.no_b {
border-width: 0px;
}
// Override theme settings (see ../template/settings.scss)
$backgroundColor: #191919;
//$mainColor: #fff;
//$headingColor: #fff;
$mainColor: #a9fb0b;
$headingColor: #a9fb0b;
$mainFontSize: 42px;
//$mainFont: 'Source Sans Pro', Helvetica, sans-serif;
//$headingFont: 'Source Sans Pro', Helvetica, sans-serif;
$headingTextShadow: none;
$headingLetterSpacing: normal;
$headingTextTransform: uppercase;
$headingTextTransform: normal;
$headingFontWeight: 600;
$linkColor: #42affa;
$linkColorHover: lighten( $linkColor, 15% );
@ -43,7 +55,16 @@ section.has-light-background {
}
}
// Theme template ------------------------------
@import "./theme";
// ---------------------------------------------
body {
background: #1c1e20;
background: -moz-radial-gradient(center, circle cover, #393a3a 0%, #1c1e20 100%);
background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #393a3a), color-stop(100%, #1c1e20));
background: -webkit-radial-gradient(center, circle cover, #323232 0%, #1c1c1c 100%);
background: -o-radial-gradient(center, circle cover, #393a3a 0%, #1c1e20 100%);
background: -ms-radial-gradient(center, circle cover, #393a3a 0%, #1c1e20 100%);
background: radial-gradient(center, circle cover, #393a3a 0%, #1c1e20 100%);
background-color: #2b2b2b;
}

View File

@ -1,7 +1,7 @@
class SlidesController < ApplicationController
def index
render( template: "slides/#{params[:slide]}" , layout: false )
render( template: "slides/#{params[:slide]}/index" , layout: false )
end
end

View File

@ -0,0 +1,163 @@
%section#how
%h2 That was what
%br
%h4 next
%br
%h1 How
%p.fragment With rails analogy
%section#app
%h2 Rails app
%p many views
%br
%h2.fragment RubyX
%p.fragment many methods
%br
%h4.fragment method = view
%section#controller
%h3 controller renders view
%br
%h3.fragment compiler compiles methods
%br
%h4.fragment controller = compiler part
%section#http
%h3 rack handles http
%br
%h3.fragment assembler and elf handles binary creation
%br
%h4.fragment lower levels don't matter to most
%section#layers
%h3 request processed by layers
%br
%h3.fragment Compiler processes in layers
%br
%h4.fragment same same, but different :-)
%section#compiler_layers
%h2 Compiler layers
%p Ruby source (parser gem)
%p.fragment Virtual oo language (vool)
%p.fragment Minimal oo Machine (mom)
%p.fragment Risc abstraction
%p.fragment Target (arm)
%p.fragment Elf / binary
%section#vool
%h2 Vool, virtual oo language
%p virtual == no syntax
%p.fragment oo == object model like ruby
%p.fragment ruby without the fluff ( splats / unless ..)
%p.fragment Statements + Expression
%p.fragment nothing implicit
%section#machines
%h2 Language vs Machine
%p next level is (abtract) machine
%p.fragment statement tree vs instruction list
%p.fragment variables vs memory
%p.fragment control structures vs jumps
%p.fragment abstract vs basic
%section#mom
%section#mom1
%h2 Mom, minimal object machine
%p 16 instructions
%p.fragment Works only on memory
%p.fragment higher level than next
%p.fragment ease transition to next level
%p.fragment 1 vool → 2-8 mom
%section#mom2
%h2 MOM instructions
%p simple call , argument transfer , return sequence
%p.fragment dynamic call , method resolve
%p.fragment checks with implicit jumps
%p.fragment ruby truth check , identity check
%p.fragment yield . . .
%section
%section#risc1
%h2 Risc abstraction
%p arm without the fluff
%p.fragment arm like registers
%p.fragment 20 instructions
%p.fragment extensible (for builtin + more)
%p.fragment last virtual layer
%p.fragment interpreter + visual debugger
%section#risc2
%h2 Risc instructions
%p mem/reg + reg/reg
%p.fragment arithmetic operators
%p.fragment tests on operation result
%p.fragment jump , call , return
%p.fragment syscall
%section#code
%h2 Code generation
%br
%br
%h2.fragment object generation
%section#model
%h2 Object Model
%p Everything is Object
%p.fragment Fixed sizes
%p.fragment opaque data, ruby has no access
%p.fragment mom instructions to process data
%section#types
%h2 Object has Type
%p.fragment Types are immutable
%p.fragment Types store callable methods
%p.fragment maps names to indexes
%p.fragment does not define types recursively
%p.fragment type reference may change
%section#classes
%h2 Type implements Class
%p Class has instance Type
%p.fragment new object has instance type
%p.fragment instance type may change
%p.fragment many types implement one class
%p.fragment class stores method definition
%section#dynamics
%h3 Types are static
%h3 Ruby is dynamic
%h3.fragment.fade-out ?
%p.fragment objects type reference may change
%p.fragment class instance type may change
%section#parfait
%h2 Basic Objects: Parfait
%p minimal runtime for compiling
%p.fragment Basic oo: Class , Type , Method , Code
%p.fragment Utils: String, Integer , Array , Hash
%p.fragment also, additional builtin methods
%section#calling
%h2 Calling convention
%p linked list (not stack)
%p.fragment object oriented
%p.fragment easy to understand
%p.fragment exceptions easier
%p.fragment binding easier
%section#message
%h2 Message Object
%p next / caller message
%p.fragment frame (locals) + args
%p.fragment return address + value
%p.fragment method
%p.fragment receiver (self)
%section#project
%h2 Project
%p 5 years
%p 3k commits , 1600 tests
%p multi arch ready, arm working
%p basic executables (mini rt)
%p stable architecture

View File

@ -0,0 +1,126 @@
%section#intro
%h1 RubyX
%p Compile ruby to binary
%p in 100% Ruby
%p No external dependencies
%p Faster ( X times )
%p Easy to understand
%p Easy to modify own tool
%section#torsten
%h2 Torsten
%p github.com/rubydesign
%p 30+ years coding
%p Now coding as hobby
%section#finland
%h2 from Finland
%p
%img{:alt => "Finland", "data-src" => image_url("slides/grillrb/finland")}/
%section#raisa
%h2
Raisa
%small (my wife)
%p
%img{:alt => "Raisa", "data-src" => image_url("slides/grillrb/raisa") , height: 400}/
%section#villataika
%h2
Run a b&b
%small villataika.fi
%p
%img{:alt => "Villa Taika", "data-src" => image_url("slides/grillrb/villataika") , height: 400}/
%section#intro2
%h2 RubyX
%p Compile ruby to binary in ruby
%p.fragment why
%p.fragment how
%p.fragment future
%section#story
%h2 Short Story
%p About the 60s
%p uncle Bob
%p going to Mars
%p the Energy solution
%section#mars
%h2 Mission to the Moon
%p 61 goal declared by Kennedy
%p.fragment 69 achieved by Appollo 9
%p.fragment 4bit , 2k RAM , 1Mhz
%p.fragment Mars 2020, maybe
%section#thorium
%h2 Molten-Salt Reactor
%p Early 60s nuclear research (Thorium)
%p.fragment sucessful run '64-'69 , 7MW
%p.fragment Walk away safe , small , little waste
%p.fragment Rediscovered by Kirk Sorensen 2008
%section#bob
%h2 Programming
%p Uncle Bob “Future of programming”
%p.fragment C ,Unix,Smalltalk ,Lisp ,invented 60s
%p.fragment Engineers doubling every 5 years
%p.fragment Go 2009 , Rust 2010 , Julia 2012
%section#60s
%h2 Theory of 60s
%p Programming, spaceflight, energy
%p.fragment Major advancement in 60s
%p.fragment New advancements recently
%section#now
%h2 Why now
%p Simula invented OO concepts in 67
%p.fragment Smalltalk (first pure OO) PARC 70s
%p.fragment Popular 80s , "Blue Book" published
%p.fragment Ruby, Python, JS, reincarnated 90s
%p.fragment YARV, mris stack machine, 00's
%section#speed
%h2 The Speed problem
%p
%large
%b 10x
%span.fragment possibly 30x
%span.fragment sometimes 100x
%p.fragment laptop becomes a pi
%p.fragment 1k hardware costs 10k
%section#effects
%h2 Effects of Speed
%p 2 language problem (nice OR fast)
%p.fragment Limited domains accessible
%p.fragment Smaller community
%p.fragment less tools
%section#problem
%h2 Real problem
%p Speed is symptom
%p.fragment Interpretation is cause
%p.fragment Compilation is the solution
%section#meta_problem
%h2 Meta problem
%p Implementation language
%p.fragment You cant fix
%p.fragment Ruby is the solution
%section#whyme
%h4 Why me?
%h2 I
%table
%tbody
%tr
%td
%img.no_b{alt: "love", "data-src" => image_url("slides/grillrb/heart.png"), height: 250}
%td
%td
%td
%img.no_b{alt: "ruby", "data-src" => image_url("slides/grillrb/ruby.png") , height: 250}
%section#also
%h2 Also:
%p I have time
%p.fragment and basic skills
%p.fragment and motivation
%section#motiv
%h2 Motivation
%p Further the art
%p.fragment prove the oo case
%p.fragment for the community
%p.fragment with you
%section#demo
%h2 Demo
%p
=link_to "www.ruby-x.org" , "http://www.ruby-x.org"

View File

@ -0,0 +1,79 @@
%section#next
%h2 Next Plans
%h2 What can you do
%h2 Impact on community
%section#my_next
%section#next
%h2 My next Plans
%p Benchmarks
%p Bootstrapping
%p Parfait
%section#bench
%h2 Benchmarks
%p Micro with mixed results
%p.fragment Integer ops slightly slower
%p.fragment Calling 2x faster
%p.fragment Puts faster than c
%section#bench_conclusion
%h2 Conclusion from Benchmarks
%p Bigger benchmarks, more functionality
%p.fragment Profiling
%p.fragment Macros
%p.fragment Inlining
%section#better_parf
%h2 Better Parfait
%p Integrate existing tests
%p.fragment Complement existing classes
%p.fragment More classes
%p.fragment Optimize
%section#better_parf
%h2 Bootstrap
%p Compile ruby-x with rubyxc
%p.fragment Improving compiler
%p.fragment Figure out metacode
%p.fragment Integrate ruby spec
%section#you
%h2 Things you can do
%p Spread the word
%p Learn
%p Participate
%section#learn
%p Learn about compilers
%p.fragment Learn with friends
%p.fragment At university
%section#participate
%h2 Participate
%p Many topics, small and large
%p.fragment Functionality or research
%p.fragment no pressure
%section#topics
%h2 Topics
%p.fragment assemblers (architectures)
%p.fragment Register allocation
%p.fragment digital trees (judy)
%p.fragment lock free synchronisation (Dr Cliff)
%p.fragment stdlib , pi project , . . . . .
%section#community
%h2 Impact on community
%p assuming bootstrapped + working
%p.fragment new applications
%p.fragment desktops, native mobile, server
%p.fragment Broaden base, more tools, positive spiral
%section#programming
%h2 Impact on programming
%p.fragment compiling JS
%p.fragment compiling Python
%p.fragment compiling c
%p.fragment unification of languages
%p.fragment 5th generation

View File

@ -0,0 +1,53 @@
%section#working1
%h2
Currenty working
%small (overview)
%p basic oo (classes/ objects)
%p.fragment memory layout
%p.fragment calling convention
%p.fragment binary creation
%section#vars
%h3 variables +
%h3 assignment
%ul
%li local /arg
%li ivar
%li implicit return
%section#static
%h2 static calling
%p argument passing
%p constants
%p local / ivar
%p calls
%section#dynamic
%h2 dynamic sending
%p as static, plus
%p.fragment method resolution
%p.fragment caching
%section#lambdas
%h3 Lambdas
%p implicit capture and compilation
%p block passing as argument
%p yield with arguments
%p return (lambda style)
%section#control
%h3 control structures
%p if / else / until
%p while
%p complex conditions
%p no break / continue (easy)
%section#not
%h2 Not working
%p eval
%p procs / binding
%p exceptions
%p class variables / globals
%p multi - assignment
%p stdlib
%p . . . . . .

View File

@ -0,0 +1,47 @@
!!!
%html{:lang => "en"}
%head
%meta{:content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/
%meta{:charset => "utf-8"}/
%title GrillRB 2019
%meta{:content => "RubyX, compiling ruby to binary", :name => "description"}/
%meta{:content => "Torsten Ruger", :name => "author"}/
%meta{:content => "yes", :name => "apple-mobile-web-app-capable"}/
%meta{:content => "black-translucent", :name => "apple-mobile-web-app-status-bar-style"}/
%meta{:content => "width=device-width, initial-scale=1.0", :name => "viewport"}/
= stylesheet_link_tag 'reveal/reveal', media: 'all'
%body
.reveal
.slides
= render partial: "slides/grillrb/intro"
= render partial: "slides/grillrb/what"
= render partial: "slides/grillrb/how"
= render partial: "slides/grillrb/next"
%section#end{:style => "text-align: left;"}
%h1 RubyX
%p
Read up
=link_to "ruby-x.org", "https://ruby-x.org"
%br/
Start coding
= link_to "github.com/ruby-x/" , "http://github.com/ruby-x"
%br
Make contact
=link_to "google group ruby-x" , "https://groups.google.com/forum/#!forum/ruby-x"
= javascript_include_tag "reveal"
= javascript_include_tag "highlight"
:javascript
// More info https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
controls: true,
progress: true,
center: true,
hash: true,
transition: 'slide', // none/fade/slide/convex/concave/zoom
width: 950,
height: 600,
});

Binary file not shown.