SlideShare a Scribd company logo
1 of 20
Download to read offline
Ace:
Browser based editor




      Julian Viereck
        @jviereck
Fabian Jakobs   Kevin Dangoor
  ajax.org          Mozilla
  @fjakobs        @dangoor
Code Editors
Our life is in the cloud...
  and our dev env?
We use desktop apps to
   build web apps?
  Can’t we do better?
     Yes - we can!
13.7 billion years ago        230 million years ago          230,000 years ago

                                                                                      1770



 1983                                                 2008                            2009


                          Mozilla                                          Ajax.org
                         Skywriter                                           Ace
                           2010                                             2010
Ajax.org Cloud9 Editor
         (Ace)
• Fully featured
• Extensible
• Scalable
• Cross Browser
No Compromise

• we don‘t strive for almost as good
• we strive to be at least as good
• it‘s time for the web to take over
Cloud9IDE Demo
Ace Building Blocks
         Editor                  Edit Session
                                                Document
       (Controller)                (Model)



                                                Language
                                                 Mode



Keyboard              Renderer
 Handler               (View)                   Selection
Tech Details
Renderer

•DOM is used for drawing only
• no state in the DOM
• never read the DOM
Virtual Viewport
                                 ..
                                 ..
                                 ....
                                 ..
                                 ...
                                 .... . . ...
                                 .


• rendering a full document in   ..
                                 .
                                 .
  the DOM doesn‘t scale          ..

                                 ..

• only render visible rows       .
                                 ..
                                 .. ..
                                 .
                                 .. . ..

                                 ..
                                 .... . . .
                                 .
Performance
•   Document size shouldn‘t matter

•   Everything in the main thread should scale with the
    viewport size


                           BUT

•   not everything does!

•   We need web workers
Web Workers
Main JS Thread   Worker


 Edit Session    JS Parser




   Document      Mirror
   .             .
   .             .
   ..            ..

   ..            ..
   .             .
   .. . ..       .. . ..

   ..            ..
   .... . . .    .... . . .
Ace Demo
Present
Present

• 30+ Contributors
• 677 Watchers, 148 Forks on Github
• 234 Pull Requests
• 17 Language modes
Future

• Code completion
• Code Navigation
• Outline View
• Documentation
Happy Coding!

       @cloud9_editor
       http://ace.ajax.org
https://github.com/ajaxorg/ace
Photo Credits

•   Big Bang http://www.flickr.com/photos/neychurluvr/4021590334/

•   Mozilla Dinosaur http://www.flickr.com/photos/neychurluvr/4021590334/

•   Bacon http://en.wikipedia.org/wiki/File:RawBacon.JPG

•   Ben and Dion http://www.flickr.com/photos/franksvalli/5163228449/

•   JSConf.EU http://blog.sinnerschrader.de/mt-static/support/themes/jsconf2009/lg_logo.png

More Related Content

What's hot

Making an independend MMO - The Albion Online Story
Making an independend MMO - The Albion Online StoryMaking an independend MMO - The Albion Online Story
Making an independend MMO - The Albion Online StoryDavid Salz
 
Contracts, risk assessment and production schedule
Contracts, risk assessment and production scheduleContracts, risk assessment and production schedule
Contracts, risk assessment and production scheduledpagoffs
 
【Unite 2017 Tokyo】インスタンシングを用いた美麗なグラフィックの実現方法
【Unite 2017 Tokyo】インスタンシングを用いた美麗なグラフィックの実現方法【Unite 2017 Tokyo】インスタンシングを用いた美麗なグラフィックの実現方法
【Unite 2017 Tokyo】インスタンシングを用いた美麗なグラフィックの実現方法Unite2017Tokyo
 
hbstudy@bpstudy#50 配布用
hbstudy@bpstudy#50 配布用hbstudy@bpstudy#50 配布用
hbstudy@bpstudy#50 配布用Toshiaki Baba
 
Video games
Video gamesVideo games
Video gamesJoevanna
 
Intro to Massively Multiplayer Online Game (MMOG) Design
Intro to Massively Multiplayer Online Game (MMOG) DesignIntro to Massively Multiplayer Online Game (MMOG) Design
Intro to Massively Multiplayer Online Game (MMOG) DesignChristopher Mohritz
 
Using Ubuntu
Using UbuntuUsing Ubuntu
Using Ubunturr1955
 

What's hot (8)

Making an independend MMO - The Albion Online Story
Making an independend MMO - The Albion Online StoryMaking an independend MMO - The Albion Online Story
Making an independend MMO - The Albion Online Story
 
Contracts, risk assessment and production schedule
Contracts, risk assessment and production scheduleContracts, risk assessment and production schedule
Contracts, risk assessment and production schedule
 
【Unite 2017 Tokyo】インスタンシングを用いた美麗なグラフィックの実現方法
【Unite 2017 Tokyo】インスタンシングを用いた美麗なグラフィックの実現方法【Unite 2017 Tokyo】インスタンシングを用いた美麗なグラフィックの実現方法
【Unite 2017 Tokyo】インスタンシングを用いた美麗なグラフィックの実現方法
 
hbstudy@bpstudy#50 配布用
hbstudy@bpstudy#50 配布用hbstudy@bpstudy#50 配布用
hbstudy@bpstudy#50 配布用
 
Open graphics
Open graphicsOpen graphics
Open graphics
 
Video games
Video gamesVideo games
Video games
 
Intro to Massively Multiplayer Online Game (MMOG) Design
Intro to Massively Multiplayer Online Game (MMOG) DesignIntro to Massively Multiplayer Online Game (MMOG) Design
Intro to Massively Multiplayer Online Game (MMOG) Design
 
Using Ubuntu
Using UbuntuUsing Ubuntu
Using Ubuntu
 

Viewers also liked

PDF.JS at SwissJeese 2012
PDF.JS at SwissJeese 2012PDF.JS at SwissJeese 2012
PDF.JS at SwissJeese 2012Julian Viereck
 
Implementing new WebAPIs
Implementing new WebAPIsImplementing new WebAPIs
Implementing new WebAPIsJulian Viereck
 
Learn BEM: CSS Naming Convention
Learn BEM: CSS Naming ConventionLearn BEM: CSS Naming Convention
Learn BEM: CSS Naming ConventionIn a Rocket
 

Viewers also liked (6)

PDF.JS at SwissJeese 2012
PDF.JS at SwissJeese 2012PDF.JS at SwissJeese 2012
PDF.JS at SwissJeese 2012
 
2011 11-mozcamp
2011 11-mozcamp2011 11-mozcamp
2011 11-mozcamp
 
2011 09-pdfjs
2011 09-pdfjs2011 09-pdfjs
2011 09-pdfjs
 
Implementing New Web
Implementing New WebImplementing New Web
Implementing New Web
 
Implementing new WebAPIs
Implementing new WebAPIsImplementing new WebAPIs
Implementing new WebAPIs
 
Learn BEM: CSS Naming Convention
Learn BEM: CSS Naming ConventionLearn BEM: CSS Naming Convention
Learn BEM: CSS Naming Convention
 

Similar to 2011 05-jszurich

Kick ass code editing and end to end JavaScript debugging
Kick ass code editing and end to end JavaScript debuggingKick ass code editing and end to end JavaScript debugging
Kick ass code editing and end to end JavaScript debuggingFabian Jakobs
 
Phonegap for Engineers
Phonegap for EngineersPhonegap for Engineers
Phonegap for EngineersBrian LeRoux
 
Web technologies for desktop development @ berlinjs apps
Web technologies for desktop development @ berlinjs appsWeb technologies for desktop development @ berlinjs apps
Web technologies for desktop development @ berlinjs appsDarko Kukovec
 
ScroIDE Project Dicussion
ScroIDE Project DicussionScroIDE Project Dicussion
ScroIDE Project DicussionMostafa Eweda
 
Masterin Large Scale Java Script Applications
Masterin Large Scale Java Script ApplicationsMasterin Large Scale Java Script Applications
Masterin Large Scale Java Script ApplicationsFabian Jakobs
 
Dojo GFX: SVG in the real world
Dojo GFX: SVG in the real worldDojo GFX: SVG in the real world
Dojo GFX: SVG in the real worldEugene Lazutkin
 
Looking For Xaml In All The Wrong Places
Looking For Xaml In All The Wrong PlacesLooking For Xaml In All The Wrong Places
Looking For Xaml In All The Wrong PlacesAdam Hill
 
W3C HTML5 KIG-The complete guide to building html5 games
W3C HTML5 KIG-The complete guide to building html5 gamesW3C HTML5 KIG-The complete guide to building html5 games
W3C HTML5 KIG-The complete guide to building html5 gamesChanghwan Yi
 
Firefox OS Graphics inside
Firefox OS Graphics insideFirefox OS Graphics inside
Firefox OS Graphics insideSotaro Ikeda
 
Debugging Web Apps on Real Mobile Devices
Debugging Web Apps on Real Mobile DevicesDebugging Web Apps on Real Mobile Devices
Debugging Web Apps on Real Mobile DevicesDale Lane
 
Making HTML5 Games with Phaser
Making HTML5 Games with PhaserMaking HTML5 Games with Phaser
Making HTML5 Games with PhaserIndieOutpost
 
Rise of the hybrids
Rise of the hybridsRise of the hybrids
Rise of the hybridsOron Ben Zvi
 
AAA 3D GRAPHICS ON THE WEB WITH REACTJS + BABYLONJS + UNITY3D by Denis Radin ...
AAA 3D GRAPHICS ON THE WEB WITH REACTJS + BABYLONJS + UNITY3D by Denis Radin ...AAA 3D GRAPHICS ON THE WEB WITH REACTJS + BABYLONJS + UNITY3D by Denis Radin ...
AAA 3D GRAPHICS ON THE WEB WITH REACTJS + BABYLONJS + UNITY3D by Denis Radin ...DevClub_lv
 
JS Fest 2019. Денис Радин. AAA 3D графика в Web с ReactJS, BabylonJS и Unity3D
JS Fest 2019. Денис Радин. AAA 3D графика в Web с ReactJS, BabylonJS и Unity3DJS Fest 2019. Денис Радин. AAA 3D графика в Web с ReactJS, BabylonJS и Unity3D
JS Fest 2019. Денис Радин. AAA 3D графика в Web с ReactJS, BabylonJS и Unity3DJSFestUA
 
Inspect The Uninspected
Inspect The UninspectedInspect The Uninspected
Inspect The Uninspectedcgack
 
Introduction to Browser DOM
Introduction to Browser DOMIntroduction to Browser DOM
Introduction to Browser DOMSiva Arunachalam
 
About Layout in Firefox
About Layout in FirefoxAbout Layout in Firefox
About Layout in FirefoxJia Mi
 

Similar to 2011 05-jszurich (20)

Kick ass code editing and end to end JavaScript debugging
Kick ass code editing and end to end JavaScript debuggingKick ass code editing and end to end JavaScript debugging
Kick ass code editing and end to end JavaScript debugging
 
Phonegap for Engineers
Phonegap for EngineersPhonegap for Engineers
Phonegap for Engineers
 
Web technologies for desktop development @ berlinjs apps
Web technologies for desktop development @ berlinjs appsWeb technologies for desktop development @ berlinjs apps
Web technologies for desktop development @ berlinjs apps
 
ScroIDE Project Dicussion
ScroIDE Project DicussionScroIDE Project Dicussion
ScroIDE Project Dicussion
 
Masterin Large Scale Java Script Applications
Masterin Large Scale Java Script ApplicationsMasterin Large Scale Java Script Applications
Masterin Large Scale Java Script Applications
 
Dojo GFX: SVG in the real world
Dojo GFX: SVG in the real worldDojo GFX: SVG in the real world
Dojo GFX: SVG in the real world
 
Looking For Xaml In All The Wrong Places
Looking For Xaml In All The Wrong PlacesLooking For Xaml In All The Wrong Places
Looking For Xaml In All The Wrong Places
 
W3C HTML5 KIG-The complete guide to building html5 games
W3C HTML5 KIG-The complete guide to building html5 gamesW3C HTML5 KIG-The complete guide to building html5 games
W3C HTML5 KIG-The complete guide to building html5 games
 
cadec-2017-golang
cadec-2017-golangcadec-2017-golang
cadec-2017-golang
 
Firefox OS Graphics inside
Firefox OS Graphics insideFirefox OS Graphics inside
Firefox OS Graphics inside
 
Psd 2 Drupal
Psd 2 DrupalPsd 2 Drupal
Psd 2 Drupal
 
Debugging Web Apps on Real Mobile Devices
Debugging Web Apps on Real Mobile DevicesDebugging Web Apps on Real Mobile Devices
Debugging Web Apps on Real Mobile Devices
 
Making HTML5 Games with Phaser
Making HTML5 Games with PhaserMaking HTML5 Games with Phaser
Making HTML5 Games with Phaser
 
Rise of the hybrids
Rise of the hybridsRise of the hybrids
Rise of the hybrids
 
20120802 timisoara
20120802 timisoara20120802 timisoara
20120802 timisoara
 
AAA 3D GRAPHICS ON THE WEB WITH REACTJS + BABYLONJS + UNITY3D by Denis Radin ...
AAA 3D GRAPHICS ON THE WEB WITH REACTJS + BABYLONJS + UNITY3D by Denis Radin ...AAA 3D GRAPHICS ON THE WEB WITH REACTJS + BABYLONJS + UNITY3D by Denis Radin ...
AAA 3D GRAPHICS ON THE WEB WITH REACTJS + BABYLONJS + UNITY3D by Denis Radin ...
 
JS Fest 2019. Денис Радин. AAA 3D графика в Web с ReactJS, BabylonJS и Unity3D
JS Fest 2019. Денис Радин. AAA 3D графика в Web с ReactJS, BabylonJS и Unity3DJS Fest 2019. Денис Радин. AAA 3D графика в Web с ReactJS, BabylonJS и Unity3D
JS Fest 2019. Денис Радин. AAA 3D графика в Web с ReactJS, BabylonJS и Unity3D
 
Inspect The Uninspected
Inspect The UninspectedInspect The Uninspected
Inspect The Uninspected
 
Introduction to Browser DOM
Introduction to Browser DOMIntroduction to Browser DOM
Introduction to Browser DOM
 
About Layout in Firefox
About Layout in FirefoxAbout Layout in Firefox
About Layout in Firefox
 

2011 05-jszurich

  • 1. Ace: Browser based editor Julian Viereck @jviereck
  • 2. Fabian Jakobs Kevin Dangoor ajax.org Mozilla @fjakobs @dangoor
  • 4. Our life is in the cloud... and our dev env? We use desktop apps to build web apps? Can’t we do better? Yes - we can!
  • 5. 13.7 billion years ago 230 million years ago 230,000 years ago 1770 1983 2008 2009 Mozilla Ajax.org Skywriter Ace 2010 2010
  • 6. Ajax.org Cloud9 Editor (Ace) • Fully featured • Extensible • Scalable • Cross Browser
  • 7. No Compromise • we don‘t strive for almost as good • we strive to be at least as good • it‘s time for the web to take over
  • 9. Ace Building Blocks Editor Edit Session Document (Controller) (Model) Language Mode Keyboard Renderer Handler (View) Selection
  • 11. Renderer •DOM is used for drawing only • no state in the DOM • never read the DOM
  • 12. Virtual Viewport .. .. .... .. ... .... . . ... . • rendering a full document in .. . . the DOM doesn‘t scale .. .. • only render visible rows . .. .. .. . .. . .. .. .... . . . .
  • 13. Performance • Document size shouldn‘t matter • Everything in the main thread should scale with the viewport size BUT • not everything does! • We need web workers
  • 14. Web Workers Main JS Thread Worker Edit Session JS Parser Document Mirror . . . . .. .. .. .. . . .. . .. .. . .. .. .. .... . . . .... . . .
  • 17. Present • 30+ Contributors • 677 Watchers, 148 Forks on Github • 234 Pull Requests • 17 Language modes
  • 18. Future • Code completion • Code Navigation • Outline View • Documentation
  • 19. Happy Coding! @cloud9_editor http://ace.ajax.org https://github.com/ajaxorg/ace
  • 20. Photo Credits • Big Bang http://www.flickr.com/photos/neychurluvr/4021590334/ • Mozilla Dinosaur http://www.flickr.com/photos/neychurluvr/4021590334/ • Bacon http://en.wikipedia.org/wiki/File:RawBacon.JPG • Ben and Dion http://www.flickr.com/photos/franksvalli/5163228449/ • JSConf.EU http://blog.sinnerschrader.de/mt-static/support/themes/jsconf2009/lg_logo.png