diff --git a/app/assets/images/slides/grillrb/finland.jpg b/app/assets/images/slides/grillrb/finland.jpg new file mode 100644 index 0000000..f9a4363 Binary files /dev/null and b/app/assets/images/slides/grillrb/finland.jpg differ diff --git a/app/assets/images/slides/grillrb/heart.png b/app/assets/images/slides/grillrb/heart.png new file mode 100644 index 0000000..d729340 Binary files /dev/null and b/app/assets/images/slides/grillrb/heart.png differ diff --git a/app/assets/images/slides/grillrb/raisa.jpg b/app/assets/images/slides/grillrb/raisa.jpg new file mode 100644 index 0000000..b8b01e1 Binary files /dev/null and b/app/assets/images/slides/grillrb/raisa.jpg differ diff --git a/app/assets/images/slides/grillrb/ruby.png b/app/assets/images/slides/grillrb/ruby.png new file mode 100644 index 0000000..8ae49bb Binary files /dev/null and b/app/assets/images/slides/grillrb/ruby.png differ diff --git a/app/assets/images/slides/grillrb/villataika.jpg b/app/assets/images/slides/grillrb/villataika.jpg new file mode 100644 index 0000000..cd93069 Binary files /dev/null and b/app/assets/images/slides/grillrb/villataika.jpg differ diff --git a/app/assets/stylesheets/reveal/black.scss b/app/assets/stylesheets/reveal/black.scss index b6a2ee3..bc7b90b 100644 --- a/app/assets/stylesheets/reveal/black.scss +++ b/app/assets/stylesheets/reveal/black.scss @@ -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; +} diff --git a/app/controllers/slides_controller.rb b/app/controllers/slides_controller.rb index 72ad897..0a78088 100644 --- a/app/controllers/slides_controller.rb +++ b/app/controllers/slides_controller.rb @@ -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 diff --git a/app/views/slides/grillrb/_how.haml b/app/views/slides/grillrb/_how.haml new file mode 100644 index 0000000..fe5f5ce --- /dev/null +++ b/app/views/slides/grillrb/_how.haml @@ -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 diff --git a/app/views/slides/grillrb/_intro.haml b/app/views/slides/grillrb/_intro.haml new file mode 100644 index 0000000..05b5d28 --- /dev/null +++ b/app/views/slides/grillrb/_intro.haml @@ -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 60’s + %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 60’s 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 60’s + %p.fragment Engineers doubling every 5 years + %p.fragment Go 2009 , Rust 2010 , Julia 2012 +%section#60s + %h2 Theory of 60’s + %p Programming, spaceflight, energy + %p.fragment Major advancement in 60’s + %p.fragment New advancements recently +%section#now + %h2 Why now + %p Simula invented OO concepts in 67 + %p.fragment Smalltalk (first pure OO) PARC 70’s + %p.fragment Popular 80’s , "Blue Book" published + %p.fragment Ruby, Python, JS, reincarnated 90’s + %p.fragment YARV, mri’s 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 can’t 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" diff --git a/app/views/slides/grillrb/_next.haml b/app/views/slides/grillrb/_next.haml new file mode 100644 index 0000000..002c21b --- /dev/null +++ b/app/views/slides/grillrb/_next.haml @@ -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 diff --git a/app/views/slides/grillrb/_what.haml b/app/views/slides/grillrb/_what.haml new file mode 100644 index 0000000..de75dd9 --- /dev/null +++ b/app/views/slides/grillrb/_what.haml @@ -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 . . . . . . diff --git a/app/views/slides/grillrb/index.haml b/app/views/slides/grillrb/index.haml new file mode 100644 index 0000000..d758f2a --- /dev/null +++ b/app/views/slides/grillrb/index.haml @@ -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, + }); diff --git a/public/rubyx.odp b/public/rubyx.odp index fbb40b8..266d49b 100644 Binary files a/public/rubyx.odp and b/public/rubyx.odp differ