Data Intensive RIAs on Rails with very little code (Netzke)
Upcoming SlideShare
Loading in...5
×
 

Data Intensive RIAs on Rails with very little code (Netzke)

on

  • 1,391 views

Netzke presentation done at OCRuby 1/31/2013

Netzke presentation done at OCRuby 1/31/2013

Statistics

Views

Total Views
1,391
Views on SlideShare
1,386
Embed Views
5

Actions

Likes
1
Downloads
7
Comments
0

1 Embed 5

https://twitter.com 5

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Data Intensive RIAs on Rails with very little code (Netzke) Data Intensive RIAs on Rails with very little code (Netzke) Presentation Transcript

  • Data intensive RIAs on Rails with very little code Forrest chang OCruby 1/31/2013Friday, February 1, 2013
  • Question(1 of many)Friday, February 1, 2013
  • Who works with Rails?Friday, February 1, 2013
  • Why do you love rails?Friday, February 1, 2013
  • improving web developmentFriday, February 1, 2013
  • improving web development • FastFriday, February 1, 2013
  • improving web development • Fast • FunFriday, February 1, 2013
  • improving web development • Fast • Fun • EasyFriday, February 1, 2013
  • Some things Rails providesFriday, February 1, 2013
  • Some things Rails provides • Structure (You know where things go/ are)Friday, February 1, 2013
  • Some things Rails provides • Structure (You know where things go/ are) • MVCFriday, February 1, 2013
  • Some things Rails provides • Structure (You know where things go/ are) • MVC • File structureFriday, February 1, 2013
  • Some things Rails provides • Structure (You know where things go/ are) • MVC • File structure • Declarative DSL/State what you meanFriday, February 1, 2013
  • Some things Rails provides • Structure (You know where things go/ are) • MVC • File structure • Declarative DSL/State what you mean • GeneratorsFriday, February 1, 2013
  • What kinds of apps do you make with Rails?Friday, February 1, 2013
  • how about these kinds of appsFriday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • data richFriday, February 1, 2013
  • Data rich appsFriday, February 1, 2013
  • Data rich apps • Data managementFriday, February 1, 2013
  • Data rich apps • Data management • Complex GUIFriday, February 1, 2013
  • Data rich apps • Data management • Complex GUI • Complex data and flowsFriday, February 1, 2013
  • Rich internet applicationFriday, February 1, 2013
  • Rich internet application • AJAXFriday, February 1, 2013
  • Rich internet application • AJAX • Single pageFriday, February 1, 2013
  • Rich internet application • AJAX • Single page • Desktop app like appsFriday, February 1, 2013
  • Friday, February 1, 2013
  • how would you use rails do make the following?Friday, February 1, 2013
  • Friday, February 1, 2013
  • Some things Rails provides (revisited) • Structure (You know where things go/ are) • MVC • File structure • Declarative/State what you mean • GeneratorsFriday, February 1, 2013
  • Friday, February 1, 2013
  • ControllerFriday, February 1, 2013
  • Controller ControllerFriday, February 1, 2013
  • Controller Controller ControllerFriday, February 1, 2013
  • Controller Controller Controller ControllerFriday, February 1, 2013
  • Controller Controller Controller Controller ControllerFriday, February 1, 2013
  • ControllerController Controller Controller Controller ControllerFriday, February 1, 2013
  • ControllerController Controller Controller Model Controller ControllerFriday, February 1, 2013
  • ControllerController Controller Controller Model Model Controller ControllerFriday, February 1, 2013
  • ControllerController Controller Controller Model Model Controller Model ControllerFriday, February 1, 2013
  • ControllerController Controller Controller Partial Model Model Controller Model ControllerFriday, February 1, 2013
  • ControllerController Controller Controller Partial Model Model Partial Controller Model ControllerFriday, February 1, 2013
  • ControllerController Controller Controller Partial Model Model Partial Partial Controller Model ControllerFriday, February 1, 2013
  • ControllerController Controller Controller Partial Model Model Partial Partial Controller Model Partial ControllerFriday, February 1, 2013
  • ControllerController Controller Controller Partial Model Model Partial Partial Controller Model Partial Partial ControllerFriday, February 1, 2013
  • ControllerController Controller Controller Partial Model Model AJAX Partial Partial Controller Model Partial Partial ControllerFriday, February 1, 2013
  • ControllerController Controller Controller Partial AJAX Model Model AJAX Partial Partial Controller Model Partial Partial ControllerFriday, February 1, 2013
  • ControllerController Controller Controller Partial AJAX Model Model AJAX Partial Partial AJAX Controller Model Partial Partial ControllerFriday, February 1, 2013
  • ControllerController Controller Controller Partial AJAX Model Model AJAX Partial Partial AJAX AJAX Controller Model Partial Partial ControllerFriday, February 1, 2013
  • ControllerController Controller Controller Partial AJAX Model Model AJAX Partial Partial AJAX AJAX Controller Model Partial Partial AJAX ControllerFriday, February 1, 2013
  • ControllerController Controller Controller Partial AJAX Model Model AJAX AJAX Partial Partial AJAX AJAX Controller Model Partial Partial AJAX ControllerFriday, February 1, 2013
  • etc.Friday, February 1, 2013
  • but wait, there’s more!Friday, February 1, 2013
  • single page appFriday, February 1, 2013
  • single page app • Structure • Backbone • Ember • etc.? • Widgets • Libraries • etc.Friday, February 1, 2013
  • Friday, February 1, 2013
  • What if you could do it in just a few lines?Friday, February 1, 2013
  • netzkeFriday, February 1, 2013
  • netzke?Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Kudos from Matz!Friday, February 1, 2013
  • Kudos from Matz! Good stuffFriday, February 1, 2013
  • Kudos from Matz! Good stuff Netzke FTW!Friday, February 1, 2013
  • Netzke: a DSL to write gui web componentsFriday, February 1, 2013
  • netzke = Rails + ext jsFriday, February 1, 2013
  • Friday, February 1, 2013
  • extjsFriday, February 1, 2013
  • extjs • Hundreds of componentsFriday, February 1, 2013
  • extjs • Hundreds of components • Component based architectureFriday, February 1, 2013
  • extjs • Hundreds of components • Component based architecture • Well documentedFriday, February 1, 2013
  • extjs • Hundreds of components • Component based architecture • Well documented • Active communityFriday, February 1, 2013
  • extjs • Hundreds of components • Component based architecture • Well documented • Active community • Maintained by a companyFriday, February 1, 2013
  • extjs • Hundreds of components • Component based architecture • Well documented • Active community • Maintained by a company • Dual LicenseFriday, February 1, 2013
  • extjs • Hundreds of components • Component based architecture • Well documented • Active community • Maintained by a company • Dual License • GPLFriday, February 1, 2013
  • extjs • Hundreds of components • Component based architecture • Well documented • Active community • Maintained by a company • Dual License • GPL • CommercialFriday, February 1, 2013
  • EXTJS Y U NO HAVE FREE, PERMISSIVE LICENSE!Friday, February 1, 2013
  • Friday, February 1, 2013
  • PROBABLY WORTH IT IF YOU NEED A DATA RICH RIAFriday, February 1, 2013
  • Ext JS?Friday, February 1, 2013
  • Ext JS? • Best RIA framework (cuz it’s pay and it’s all they do, next best is far from it)Friday, February 1, 2013
  • Ext JS? • Best RIA framework (cuz it’s pay and it’s all they do, next best is far from it) • Cross platformFriday, February 1, 2013
  • Ext JS? • Best RIA framework (cuz it’s pay and it’s all they do, next best is far from it) • Cross platform • Examples and documentationFriday, February 1, 2013
  • Ext JS? • Best RIA framework (cuz it’s pay and it’s all they do, next best is far from it) • Cross platform • Examples and documentation • Maintained by company/support/ trainingFriday, February 1, 2013
  • MissingFriday, February 1, 2013
  • Missing • Seamless service side bindings (you do it yourself)Friday, February 1, 2013
  • Missing • Seamless service side bindings (you do it yourself) • Server driven configuration (you do both sides driving however you want)Friday, February 1, 2013
  • ExtJS: Component based frameworkFriday, February 1, 2013
  • ExtJS: Component based framework • ReusabilityFriday, February 1, 2013
  • ExtJS: Component based framework • Reusability • ExtensibilityFriday, February 1, 2013
  • ExtJS: Component based framework • Reusability • Extensibility • Compose-abilityFriday, February 1, 2013
  • ExtJS: Component based framework • Reusability • Extensibility • Compose-ability • EventsFriday, February 1, 2013
  • ExtJS: Front end focusedFriday, February 1, 2013
  • Benefits of Starting From the ServerFriday, February 1, 2013
  • Benefits of Starting From the Server • Authentication/AuthorizationFriday, February 1, 2013
  • Benefits of Starting From the Server • Authentication/Authorization • DataFriday, February 1, 2013
  • Benefits of Starting From the Server • Authentication/Authorization • Data • Business LogicFriday, February 1, 2013
  • Benefits of Starting From the Server • Authentication/Authorization • Data • Business Logic • RubyFriday, February 1, 2013
  • netzkeFriday, February 1, 2013
  • netzke • Rails + Ext JSFriday, February 1, 2013
  • netzke • Rails + Ext JS • Server and client working together seamlesslyFriday, February 1, 2013
  • netzke • Rails + Ext JS • Server and client working together seamlessly • and easilyFriday, February 1, 2013
  • client + server = WIN!Friday, February 1, 2013
  • client + server = WIN! • Single point of configurationFriday, February 1, 2013
  • client + server = WIN! • Single point of configuration • TestabilityFriday, February 1, 2013
  • client + server = WIN! • Single point of configuration • Testability • ResuabilityFriday, February 1, 2013
  • client + server = WIN! • Single point of configuration • Testability • Resuability • Code encapsulationFriday, February 1, 2013
  • A netzke component is a ruby class represented by an ext js component in the browserFriday, February 1, 2013
  • Ruby class responsibilities • Generate Ext JS counterpart (client class) • Configure it’s client class instance • Run any server side logic • Handle nesting, dynamic loading, etc.Friday, February 1, 2013
  • Netzke component Ruby class: class SimpleComponent < Netzke::Base end and it’s corresponding JS class Ext.define(‘Netzke.classes.SimpleComponent’, { // ... });Friday, February 1, 2013
  • some netzke featuresFriday, February 1, 2013
  • client server interactionFriday, February 1, 2013
  • nestingFriday, February 1, 2013
  • inheritanceFriday, February 1, 2013
  • Customization Customize nearly everythingFriday, February 1, 2013
  • <RANT>Friday, February 1, 2013
  • Hate “write it yourself scratch” • GUI items via HTML • Markup • StyleFriday, February 1, 2013
  • Hate the front/backend duplications • Models on both ends • Logic on both endsFriday, February 1, 2013
  • In Netzke, Single Point of configurationFriday, February 1, 2013
  • </RANT>Friday, February 1, 2013
  • Rails setupFriday, February 1, 2013
  • Rails setup • Copy extjs lib to public/extjsFriday, February 1, 2013
  • Rails setup • Copy extjs lib to public/extjs • Copy famfamfam_silk_icons to images/icons (optional)Friday, February 1, 2013
  • Rails setup • Copy extjs lib to public/extjs • Copy famfamfam_silk_icons to images/icons (optional) • Gemfile gem ‘netzke-core’ # presently point to github gem ‘netzke-basepack’Friday, February 1, 2013
  • Rails setup • Copy extjs lib to public/extjs • Copy famfamfam_silk_icons to images/icons (optional) • Gemfile gem ‘netzke-core’ # presently point to github gem ‘netzke-basepack’ • add to routes.rb netzke # all data and dynamic loading routesFriday, February 1, 2013
  • Rails setup • Copy extjs lib to public/extjs • Copy famfamfam_silk_icons to images/icons (optional) • Gemfile gem ‘netzke-core’ # presently point to github gem ‘netzke-basepack’ • add to routes.rb netzke # all data and dynamic loading routes • Add to header of the appropriate layout <%= csrf_meta_tag %> <%= load_netzke %>Friday, February 1, 2013
  • why netzke?Friday, February 1, 2013
  • why netzke? • Clean client (Ext JS)/server (Rails) integrationFriday, February 1, 2013
  • why netzke? • Clean client (Ext JS)/server (Rails) integration • Built in components that understand RailsFriday, February 1, 2013
  • why netzke? • Clean client (Ext JS)/server (Rails) integration • Built in components that understand Rails • Easy to compose and reuse componentsFriday, February 1, 2013
  • why netzke? • Clean client (Ext JS)/server (Rails) integration • Built in components that understand Rails • Easy to compose and reuse components • Stop writing everything from scratch on both front and back endsFriday, February 1, 2013
  • instead of canned examples...Friday, February 1, 2013
  • My AppFriday, February 1, 2013
  • Audit Log Archive App • Audit Log data for our Salesforce.com instance taking up all our space, so need to archive it, but still get access off line • Salesforce.com database, i.e. legacyFriday, February 1, 2013
  • APP WALK THROUGHFriday, February 1, 2013
  • screen by screen codeFriday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • Friday, February 1, 2013
  • That’s all the code!Friday, February 1, 2013
  • Netzke showcase apps (i.e. examples)Friday, February 1, 2013
  • http://yanit.heroku.com/Friday, February 1, 2013
  • http://netzke-demo.herokuapp.com/Friday, February 1, 2013
  • http://netzke-desktop-demo.heroku.com/Friday, February 1, 2013
  • BenefitsFriday, February 1, 2013
  • Benefits • Server multiplexingFriday, February 1, 2013
  • Benefits • Server multiplexing • Reusable components - OO codingFriday, February 1, 2013
  • Benefits • Server multiplexing • Reusable components - OO coding • The power of Ext JSFriday, February 1, 2013
  • Benefits • Server multiplexing • Reusable components - OO coding • The power of Ext JS • Dynamic LoadingFriday, February 1, 2013
  • Benefits • Server multiplexing • Reusable components - OO coding • The power of Ext JS • Dynamic Loading • Quick DevelopmentFriday, February 1, 2013
  • Benefits • Server multiplexing • Reusable components - OO coding • The power of Ext JS • Dynamic Loading • Quick Development • Easy to code if your needs match the examplesFriday, February 1, 2013
  • DrawbacksFriday, February 1, 2013
  • Drawbacks • ExtJS License (YMMV)Friday, February 1, 2013
  • Drawbacks • ExtJS License (YMMV) • Netzke documentation good but sometimes stuff missingFriday, February 1, 2013
  • Drawbacks • ExtJS License (YMMV) • Netzke documentation good but sometimes stuff missing • Needs to know Ext JS for certain partsFriday, February 1, 2013
  • Drawbacks • ExtJS License (YMMV) • Netzke documentation good but sometimes stuff missing • Needs to know Ext JS for certain parts • Needs ActiveRecordSession store, session hungryFriday, February 1, 2013
  • Drawbacks • ExtJS License (YMMV) • Netzke documentation good but sometimes stuff missing • Needs to know Ext JS for certain parts • Needs ActiveRecordSession store, session hungry • I don’t know how to TDD/unit test these yetFriday, February 1, 2013
  • Drawbacks • ExtJS License (YMMV) • Netzke documentation good but sometimes stuff missing • Needs to know Ext JS for certain parts • Needs ActiveRecordSession store, session hungry • I don’t know how to TDD/unit test these yet • Caching can bite you during developmentFriday, February 1, 2013
  • Drawbacks • ExtJS License (YMMV) • Netzke documentation good but sometimes stuff missing • Needs to know Ext JS for certain parts • Needs ActiveRecordSession store, session hungry • I don’t know how to TDD/unit test these yet • Caching can bite you during development • Easy to code if your needs match the examplesFriday, February 1, 2013
  • CONCLUSIONFriday, February 1, 2013
  • CONCLUSION • Netzke awesome for Data Rich RIA’sFriday, February 1, 2013
  • CONCLUSION • Netzke awesome for Data Rich RIA’s • Focus on what you want to solve not the detailsFriday, February 1, 2013
  • CONCLUSION • Netzke awesome for Data Rich RIA’s • Focus on what you want to solve not the details • Ruby to write frontendFriday, February 1, 2013
  • CONCLUSION • Netzke awesome for Data Rich RIA’s • Focus on what you want to solve not the details • Ruby to write frontend • General happiness all aroundFriday, February 1, 2013
  • Resources • http://netzke.org • showcase apps • https://groups.google.com/group/ netzke • http://writelesscode.com • @netzke • I will blog about how to write ALAAFriday, February 1, 2013
  • Credit to @nomadcoder • For writing @netzke (awesome!) • For material from his slides, which I liberally borrowedFriday, February 1, 2013
  • Friday, February 1, 2013