SlideShare a Scribd company logo
CHOOSING A JAVASCRIPT
FRAMEWORK
with Pam Selle

@pamasaur // thewebivore.com // turing.cool
AllThings Open 2015
SO… WE
WROTETHIS
THING
me,Tim Ruffles, Christopher
Hiller, and Jamie White
I will not tell you what to do.
SPOILERS!
What I will do, however
is walk you through each of the major frameworks
in the hope that you can make an informed choice for 

a project, for additional learning, or general knowledge
AGENDA
• What is a JavaScript framework?
• Major frameworks:
• Backbone
• Angular
• Ember
AGENDA
• Rising stars:
• Polymer
• React
• Framework evaluation techniques
WHAT IS A FRAMEWORK?
LONG AGO …
PEOPLE MADE WEB APPS
Okay, not that different from now
BUT
(that hasn’t changed much either)
There wasn’t “one way”
Most of the major JavaScript frameworks started in 2009/2010
As a result, frameworks emerged
–Johnny Appleseed
“Type a quote here.”
http://xkcd.com/927/
Still, JS frameworks are a very GOOD thing
Because you shouldn’t have to write a router.
Ask yourself:What’s your 15%?
MAJOR FRAMEWORKS
MAJOR FRAMEWORKS
• Backbone
• Angular
• Ember
Overview, strengths/weaknesses + a little code
BACKBONE
BASICS
• Origin story: DocumentCloud, Rails
• “Core” of an application
• “Unopinionated”
OPINIONATED?
Opinionated: there’s an obvious (or best practices-
driven) way to solve the problem.
Unopinionated:“Choose your own adventure,”
generally more flexible, ex. if incorporating other
libraries into the project.
WHATYOU GET
• Core MVC components
• Nudge in an event-driven application design
DEPENDENCIES
• Underscore
• jQuery or jQuery alternative (ex. Zepto)
STRENGTHS
• Unopinionated
• Integrates well with many libraries and backends
• Events system
WEAKNESSES
• Unopinionated
• “… that’d be your problem”
BACKBONE COMPONENTS
• Models
• Views
• Collections
• Routing
WALK-THROUGH
• Basic Model +View setup
BACKBONE MODELS
Make a model subclass using .extend( )
var	
  Property	
  =	
  Backbone.Model.extend({	
  
	
  	
  star:	
  function()	
  {	
  
	
  	
  	
  	
  this.set("starred",	
  !this.get("starred"));	
  
	
  	
  	
  	
  this.save();	
  
	
  	
  }	
  
});	
  
(code in this presentation is from the book, & final versions of sample
apps are @ github.com/pselle/choosing-javascript-framework)
BACKBONEVIEWS
.extend(), define DOM properties, render
var	
  PropertyShowView	
  =	
  Backbone.View.extend({	
  
	
  	
  tagName:	
  'div',	
  
	
  	
  className:	
  'property',	
  
	
  	
  template:	
  loadTemplate("property-­‐show"),	
  
	
  	
  render:	
  function()	
  {	
  
	
  	
  	
  	
  this.el.innerHTML	
  =	
  this.template(this.model.attributes);	
  
	
  	
  	
  	
  return	
  this;	
  
	
  	
  }	
  
});	
  
BACKBONEVIEWS
.extend(), define DOM properties, render
var	
  PropertyShowView	
  =	
  Backbone.View.extend({	
  
	
  	
  tagName:	
  'div',	
  
	
  	
  className:	
  'property',	
  
	
  	
  template:	
  loadTemplate("property-­‐show"),	
  
	
  	
  render:	
  function()	
  {	
  
	
  	
  	
  	
  this.el.innerHTML	
  =	
  this.template(this.model.attributes);	
  
	
  	
  	
  	
  return	
  this;	
  
	
  	
  }	
  
});	
  
BACKBONEVIEWS
.extend(), define DOM properties, render
var	
  PropertyShowView	
  =	
  Backbone.View.extend({	
  
	
  	
  tagName:	
  'div',	
  
	
  	
  className:	
  'property',	
  
	
  	
  template:	
  loadTemplate("property-­‐show"),	
  
	
  	
  render:	
  function()	
  {	
  
	
  	
  	
  	
  this.el.innerHTML	
  =	
  this.template(this.model.attributes);	
  
	
  	
  	
  	
  return	
  this;	
  
	
  	
  }	
  
});	
  
BACKBONEVIEWS
.extend(), define DOM properties, render
var	
  PropertyShowView	
  =	
  Backbone.View.extend({	
  
	
  	
  tagName:	
  'div',	
  
	
  	
  className:	
  'property',	
  
	
  	
  template:	
  loadTemplate("property-­‐show"),	
  
	
  	
  render:	
  function()	
  {	
  
	
  	
  	
  	
  this.el.innerHTML	
  =	
  this.template(this.model.attributes);	
  
	
  	
  	
  	
  return	
  this;	
  
	
  	
  }	
  
});	
  
BACKBONEVIEWS
Using a view with a model

var	
  myHouse	
  =	
  new	
  Property({	
  
	
  location:	
  "middle	
  of	
  our	
  street",	
  
	
  noiseLevel:	
  "usually	
  quite	
  loud"	
  
});	
  
var	
  propertyView	
  =	
  new	
  PropertyView({	
  
	
  model:	
  myHouse	
  
});	
  
propertyView.render()	
  
document.body.appendChild(propertyView.el);	
  
BACKBONEVIEWS
<div	
  class="property">

	
  	
  <h1>1123	
  Sunny	
  Road</h1>	
  
	
  	
  <h2>37890</h2>	
  
	
  	
  <img	
  src="/shared/images/
andrewmalone_house.jpg">	
  
	
  	
  <p>This	
  is	
  a	
  fantastic	
  house!</p>	
  
	
  	
  <p>Asking	
  price:	
  230000</p>	
  
	
  	
  <button	
  class="pure-­‐button	
  star">Save	
  as	
  
favorite</button>	
  
</div>
OTHER COMPONENTS
• Collections
• Groups of models
• Router
• Read/write the URL without reloading the page
OTHER COMPONENTS
• Events
• Views trigger updates to model, vice versa
• Core component of Backbone
RESOURCES
• http://backbonetutorials.com/
• http://addyosmani.github.io/backbone-
fundamentals/
• Annotated source: 

http://backbonejs.org/docs/backbone.html
ANGULAR
BASICS
• Fastest growing JavaScript framework
• Write behavior in your markup (directives)
• Google!
WHATYOU GET
• Strongly defined building components (directives,
controllers, services)
• Two-way data binding
• Dependency injection
• Auxiliary tools available: Karma, Protractor
DEPENDENCIES
• None
• Loads its own smaller jQuery

(will use your copy if provided on page, supports
2.1+)
STRENGTHS
• Short/low-context setup
• Long feature list
• Module-friendly
• Major industry backing
WEAKNESSES
• Recent rise to prominence = less time in prod
• High lock-in with writing behavior in markup
• Skeptics for future roadmap/Google backing
• 1.3 dropped IE8 support, some teams stuck in
older version now (abandonware fears)
ANGULAR KEY
COMPONENTS
• Modules
• Directives
• Services
• Controllers
MODULES
Every Angular app has 1+ module definition
var	
  realtorsapp	
  =	
  angular.module('realtorsapp',	
  []);	
  
<html	
  ng-­‐app="realtorsapp">
DIRECTIVES
Modify the behavior of the DOM (custom)
angular.module('myapp',	
  [])	
  
	
  	
  .directive('unicorn',	
  function()	
  {	
  
	
  	
  	
  	
  return	
  {	
  
	
  	
  	
  	
  	
  	
  restrict:	
  'E',	
  
	
  	
  	
  	
  	
  	
  link:	
  function(scope,	
  element,	
  attrs)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  element.html('Unicorn')	
  
	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  };	
  
});	
  
<unicorn></unicorn>
DIRECTIVES
Modify the behavior of the DOM (built in)
<table	
  ng-­‐init="properties=['123	
  Iris	
  Lane',	
  '234	
  
Sunflower	
  Blvd','923	
  Azalea	
  Rd']">	
  
	
  	
  <tr	
  ng-­‐repeat="property	
  in	
  properties">	
  
	
  	
  	
  	
  <td><a	
  href="#">{{	
  property	
  }}</a></td>	
  
	
  	
  	
  	
  <td>20001</td>	
  
	
  	
  	
  	
  <td>$1M</td>	
  
	
  	
  </tr>	
  
</table>	
  
SERVICES
• Singleton to inject into any Angular component
• Lazily instantiated
angular.module('realtorsApp')	
  
	
  	
  .factory('Properties',	
  function	
  ($http)	
  {	
  
	
  	
  	
  	
  var	
  getProperties	
  =	
  function	
  getProperties()	
  {	
  
	
  	
  	
  	
  	
  	
  return	
  $http.get('data.json')	
  
	
  	
  	
  	
  	
  	
  	
  	
  .then(function	
  (res)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  return	
  res.data.properties;	
  
	
  	
  	
  	
  	
  	
  	
  	
  });	
  
	
  	
  	
  	
  };	
  
	
  	
  	
  	
  return	
  {	
  
	
  	
  	
  	
  	
  	
  getProperties:	
  getProperties	
  
	
  	
  	
  	
  };	
  
	
  	
  });	
  
CONTROLLERS
• Controllers augment scope ($scope)
• Bind business logic to the view
angular.module('realtorsApp').controller('PropertiesController',	
  
	
  function	
  ($scope,	
  Properties,	
  $window)	
  {	
  
	
  	
  	
  Properties.getProperties()	
  
	
  	
  	
  	
  	
  //	
  chain	
  w/	
  the	
  promise	
  returned	
  by	
  getProperties()	
  
	
  	
  	
  	
  	
  .then(function	
  success(properties)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  $scope.properties	
  =	
  properties;	
  
	
  	
  	
  	
  	
  },	
  function	
  failure(err)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  $window.alert(err);	
  
	
  	
  	
  });	
  
	
  });	
  
});
CONTROLLERS
• Controllers augment scope ($scope)
• Bind business logic to the view
<table	
  ng-­‐controller="PropertyController">	
  
	
  	
  <tr	
  class="property-­‐item"	
  ng-­‐repeat="property	
  in	
  properties">	
  
	
  	
  	
  	
  <td>	
  
	
  	
  	
  	
  	
  	
  <h1><a	
  ng-­‐href="#/detail/
{{	
  property.id	
  }}">{{	
  property.streetAddress	
  }}</a></h1>	
  
	
  	
  	
  	
  	
  	
  <p>Asking	
  Price:	
  {{	
  property.price	
  |	
  currency	
  }}</p>	
  
	
  	
  	
  	
  	
  	
  <p>{{	
  property.zipCode	
  }}</p>	
  
	
  	
  	
  	
  </td>	
  
	
  	
  </tr>	
  
</table>
OTHER COMPONENTS
• Filters
• Animations
• i18n l10n
• Accessibility with ngAria
• Testing (Karma, Protractor)
(BIG) CAVEAT
• Angular 2: https://angular.io/
• TypeScript
RESOURCES
• https://docs.angularjs.org/guide/
• https://docs.angularjs.org/api/
• https://docs.angularjs.org/tutorial/
RESOURCES
• https://egghead.io (great short videos, ~$20/mo.)
• http://angular-air.com/ (live video podcast)
EMBER
BASICS
• Most complete JS framework
• Built completely on modular OSS components
• Community super-powered
WHATYOU GET
• Very strongly defined MVC components
• Data binding
• Ember Components
• Great routing support
• Dependency injection
WHATYOU GET
• Code generation with Ember CLI
• Debugging tools with Ember Inspector
DEPENDENCIES
• Node.js
• NPM
STRENGTHS
• Community!
• Convention-driven
• Commonalities with every other Ember app
• Generation tools and templates
WEAKNESSES
• SometimesTOO much information
• “Right” way to do things = difficult to get up to
speed quickly
• Not as pervasive as other two major frameworks
KEY COMPONENTS
• Templating via Handlebars
• Models
• Routes
• Components
• Controllers
WALK-THROUGH
• Getting started
• Routes
• Models
• Components
GETTING STARTED
you@xyz$	
  npm	
  install	
  -­‐g	
  ember-­‐cli	
  
you@xyz$	
  ember	
  new	
  new-­‐app	
  
you@xyz$	
  cd	
  new-­‐app	
  
you@xyz$	
  ember	
  server
GETTING STARTED
GETTING STARTED
• Dependencies
• Git
• Ready to go!
Choosing a Javascript Framework
ROUTES
ember	
  generate	
  route	
  index	
  
//	
  routes/index.js	
  
import	
  Ember	
  from	
  'ember';	
  
export	
  default	
  Ember.Route.extend({	
  
	
  	
  model:	
  function()	
  {	
  
	
  	
  	
  	
  return	
  $.getJSON('/shared/data.json');	
  
	
  	
  }	
  
});	
  
	
  	
  
MODELS
export	
  default	
  Ember.Route.extend({	
  
	
  	
  model:	
  function()	
  {	
  
	
  	
  	
  	
  return	
  $.getJSON('/shared/data.json');	
  
	
  	
  }	
  
});	
  
	
  	
  
MODELS
ember	
  generate	
  model	
  post	
  title:string	
  body:string	
  
//	
  models/post.js	
  
import	
  DS	
  from	
  'ember-­‐data';	
  
export	
  default	
  DS.Model.extend({	
  
	
  	
  title:	
  DS.attr('string'),	
  
	
  	
  body:	
  DS.attr('string')	
  
});	
  
COMPONENTS
Web components!
Contain:
• Template (presentation/markup)
• Behavior (JavaScript)
DETOUR
Web components are comprised of multiple
standards that are not yet implemented across
browsers:
Custom elements, HTML imports, templates, and
shadow DOM
http://webcomponents.org/
COMPONENTS
// ember generate component my-component --pod
// components/my-component/template.hs

// components/mycomponent/component.js
{{my-component}}
RESOURCES
• Ember Guides (guides.ember.com)
• Ember Watch (emberwatch.com)
• Ember CLI 101(leanpub.com/ember-cli-101)
RISING STARS
POLYMER
POLYMER
• Web components!
• Also see: x-tags.org, from Mozilla
DETOUR: RESUMED!
• Specs
• Custom elements
• HTML imports
• Templates
• Shadow DOM
DETOUR: RESUMED!
• Webcomponents.js polyfills
• Polymer vs. web components
jonrimmer.github.io/are-we-componentized-yet/
POLYMER COMPONENT
//	
  my-­‐component.html	
  
<link	
  rel="import"	
  href="../components/polymer/
polymer.html">	
  
<polymer-­‐element	
  name="my-­‐component">

	
  	
  <template>

	
  	
  	
  	
  <style></style>

	
  	
  	
  	
  <h2>My	
  Custom	
  Component!</h2>

	
  	
  </template>

	
  	
  <script>Polymer({is:'my-­‐component'})</script>

</polymer-­‐element>	
  
<my-­‐component></my-­‐component>
POLYMER COMPONENT
//	
  my-­‐component.html	
  
<link	
  rel="import"	
  href="../components/polymer/
polymer.html">	
  
<polymer-­‐element	
  name="my-­‐component">

	
  	
  <template>

	
  	
  	
  	
  <style></style>

	
  	
  	
  	
  <h2>My	
  Custom	
  Component!</h2>

	
  	
  </template>

	
  	
  <script>Polymer({is:'my-­‐component'})</script>

</polymer-­‐element>	
  
<my-­‐component></my-­‐component>
POLYMER COMPONENT
//	
  my-­‐component.html	
  
<link	
  rel="import"	
  href="../components/polymer/
polymer.html">	
  
<polymer-­‐element	
  name="my-­‐component">

	
  	
  <template>

	
  	
  	
  	
  <style></style>

	
  	
  	
  	
  <h2>My	
  Custom	
  Component!</h2>

	
  	
  </template>

	
  	
  <script>Polymer({is:'my-­‐component'})</script>

</polymer-­‐element>	
  
<my-­‐component></my-­‐component>
POLYMER COMPONENT
//	
  my-­‐component.html	
  
<link	
  rel="import"	
  href="../components/polymer/
polymer.html">	
  
<polymer-­‐element	
  name="my-­‐component">

	
  	
  <template>

	
  	
  	
  	
  <style></style>

	
  	
  	
  	
  <h2>My	
  Custom	
  Component!</h2>

	
  	
  </template>

	
  	
  <script>Polymer({is:'my-­‐component'})</script>

</polymer-­‐element>	
  
<my-­‐component></my-­‐component>
RESOURCES
• Docs (polymer-project.org/1.0/docs)
• Web Components Weekly (webcomponentsweekly.me)
• Polymer Slack (polymer-slack.herokuapp.com)
• Polymer Podcast (www.polymerpodcast.com)
• More links (http://bit.ly/1Gc5ccI)
REACT
REACT
• Only view layer
• Shadow DOM
• Super performant
REACT COMPONENT
var CommentBox = React.createClass({
render: function() {
return (
<div className="commentBox">
Hello, world! I am a CommentBox.
</div>
);
}
});
ReactDOM.render(
<CommentBox />,
document.getElementById('content')
);
REACT COMPONENT
var CommentBox = React.createClass({
render: function() {
return (
<div className="commentBox">
Hello, world! I am a CommentBox.
</div>
);
}
});
ReactDOM.render(<CommentBox />, document.getElementById('content'));
SEE ALSO
• Flux - Architecture pattern
• Om - React with ClojureScript
RESOURCES
• http://reactjsnewsletter.com/
• http://reactpodcast.com/
• http://www.reactiflux.com/ :(
EVALUATING FRAMEWORKS
Choosing a Javascript Framework
EVALUATIONTOOLS
• Spreadsheet for ranking: http://bit.ly/1g6kDSS
• Rank frameworks according to business, technical,
and team criteria
• Wharton DevTap: 

http://technology.wharton.upenn.edu/devtap/
THANKYOU!
@pamasaur // thewebivore.com // turing.cool
50% OFF CHOOSING A JS
FRAMEWORK BOOK
https://gum.co/OAOI/allthingsopen

More Related Content

What's hot (20)

PDF
Aligning Ember.js with Web Standards
Matthew Beale
 
PDF
The DOM is a Mess @ Yahoo
jeresig
 
PDF
Developing, Testing and Scaling with Apache Camel - UberConf 2015
Matt Raible
 
PDF
Play Framework workshop: full stack java web app
Andrew Skiba
 
PPT
Migraine Drupal - syncing your staging and live sites
drupalindia
 
PDF
jQuery Proven Performance Tips & Tricks
Addy Osmani
 
PDF
Laravel 8 export data as excel file with example
Katy Slemon
 
PDF
Play Framework: async I/O with Java and Scala
Yevgeniy Brikman
 
PPT
Build Your Own CMS with Apache Sling
Bob Paulin
 
PPTX
Real World Lessons in Progressive Web Application & Service Worker Caching
Chris Love
 
KEY
Building a real life application in node js
fakedarren
 
PDF
High Performance JavaScript - jQuery Conference SF Bay Area 2010
Nicholas Zakas
 
PDF
Web Development with NodeJS
Riza Fahmi
 
PDF
Asynchronous web apps with the Play Framework 2.0
Oscar Renalias
 
PDF
Future of Web Apps: Google Gears
dion
 
PPTX
Play + scala + reactive mongo
Max Kremer
 
PDF
Serverless Java on Kubernetes
Krzysztof Sobkowiak
 
PDF
[Bristol WordPress] Supercharging WordPress Development
Adam Tomat
 
PDF
Play framework
Andrew Skiba
 
PDF
Service workers
jungkees
 
Aligning Ember.js with Web Standards
Matthew Beale
 
The DOM is a Mess @ Yahoo
jeresig
 
Developing, Testing and Scaling with Apache Camel - UberConf 2015
Matt Raible
 
Play Framework workshop: full stack java web app
Andrew Skiba
 
Migraine Drupal - syncing your staging and live sites
drupalindia
 
jQuery Proven Performance Tips & Tricks
Addy Osmani
 
Laravel 8 export data as excel file with example
Katy Slemon
 
Play Framework: async I/O with Java and Scala
Yevgeniy Brikman
 
Build Your Own CMS with Apache Sling
Bob Paulin
 
Real World Lessons in Progressive Web Application & Service Worker Caching
Chris Love
 
Building a real life application in node js
fakedarren
 
High Performance JavaScript - jQuery Conference SF Bay Area 2010
Nicholas Zakas
 
Web Development with NodeJS
Riza Fahmi
 
Asynchronous web apps with the Play Framework 2.0
Oscar Renalias
 
Future of Web Apps: Google Gears
dion
 
Play + scala + reactive mongo
Max Kremer
 
Serverless Java on Kubernetes
Krzysztof Sobkowiak
 
[Bristol WordPress] Supercharging WordPress Development
Adam Tomat
 
Play framework
Andrew Skiba
 
Service workers
jungkees
 

Viewers also liked (7)

PDF
Frontend Application Architecture, Patterns, and Workflows
Treasure Data, Inc.
 
PPTX
Choosing a JavaScript Framework
Tim Rayburn
 
PDF
Choosing a JavaScript Framework
Treasure Data, Inc.
 
PDF
Angular 2 vs React
Iran Reyes Fleitas
 
PDF
ReactJS vs AngularJS - Head to Head comparison
500Tech
 
PDF
Angular 2 - Core Concepts
Fabio Biondi
 
PDF
Getting Started with Angular 2
FITC
 
Frontend Application Architecture, Patterns, and Workflows
Treasure Data, Inc.
 
Choosing a JavaScript Framework
Tim Rayburn
 
Choosing a JavaScript Framework
Treasure Data, Inc.
 
Angular 2 vs React
Iran Reyes Fleitas
 
ReactJS vs AngularJS - Head to Head comparison
500Tech
 
Angular 2 - Core Concepts
Fabio Biondi
 
Getting Started with Angular 2
FITC
 
Ad

Similar to Choosing a Javascript Framework (20)

PPTX
Basics of AngularJS
Filip Janevski
 
PDF
Introduction to angular js
Marco Vito Moscaritolo
 
PPTX
Javascript first-class citizenery
toddbr
 
PPTX
AngularJS
LearningTech
 
KEY
[Coscup 2012] JavascriptMVC
Alive Kuo
 
PPTX
Good karma: UX Patterns and Unit Testing in Angular with Karma
ExoLeaders.com
 
PDF
AngularJS: The Bridge Between Today and Tomorrow's Web (Todd Motto)
Future Insights
 
PDF
Django Rest Framework and React and Redux, Oh My!
Eric Palakovich Carr
 
PPTX
AngularJS.part1
Andrey Kolodnitsky
 
KEY
Javascript unit testing, yes we can e big
Andy Peterson
 
PDF
AngularJS Basic Training
Cornel Stefanache
 
PDF
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
Guy Royse
 
PDF
Get AngularJS Started!
Dzmitry Ivashutsin
 
PDF
Web Components v1
Mike Wilcox
 
PDF
Web Components Everywhere
Ilia Idakiev
 
PPTX
Angular
LearningTech
 
PPTX
Angular
LearningTech
 
KEY
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
Paulo Ragonha
 
PDF
Building Custom AngularJS Directives - A Step-by-Step Guide - Dan Wahlin | Fa...
FalafelSoftware
 
PDF
The Best (and Worst) of Django
Jacob Kaplan-Moss
 
Basics of AngularJS
Filip Janevski
 
Introduction to angular js
Marco Vito Moscaritolo
 
Javascript first-class citizenery
toddbr
 
AngularJS
LearningTech
 
[Coscup 2012] JavascriptMVC
Alive Kuo
 
Good karma: UX Patterns and Unit Testing in Angular with Karma
ExoLeaders.com
 
AngularJS: The Bridge Between Today and Tomorrow's Web (Todd Motto)
Future Insights
 
Django Rest Framework and React and Redux, Oh My!
Eric Palakovich Carr
 
AngularJS.part1
Andrey Kolodnitsky
 
Javascript unit testing, yes we can e big
Andy Peterson
 
AngularJS Basic Training
Cornel Stefanache
 
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
Guy Royse
 
Get AngularJS Started!
Dzmitry Ivashutsin
 
Web Components v1
Mike Wilcox
 
Web Components Everywhere
Ilia Idakiev
 
Angular
LearningTech
 
Angular
LearningTech
 
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
Paulo Ragonha
 
Building Custom AngularJS Directives - A Step-by-Step Guide - Dan Wahlin | Fa...
FalafelSoftware
 
The Best (and Worst) of Django
Jacob Kaplan-Moss
 
Ad

More from All Things Open (20)

PDF
Agentic AI for Developers and Data Scientists Build an AI Agent in 10 Lines o...
All Things Open
 
PPTX
Big Data on a Small Budget: Scalable Data Visualization for the Rest of Us - ...
All Things Open
 
PDF
AI 3-in-1: Agents, RAG, and Local Models - Brent Laster
All Things Open
 
PDF
Let's Create a GitHub Copilot Extension! - Nick Taylor, Pomerium
All Things Open
 
PDF
Leveraging Pre-Trained Transformer Models for Protein Function Prediction - T...
All Things Open
 
PDF
Gen AI: AI Agents - Making LLMs work together in an organized way - Brent Las...
All Things Open
 
PDF
You Don't Need an AI Strategy, But You Do Need to Be Strategic About AI - Jes...
All Things Open
 
PPTX
DON’T PANIC: AI IS COMING – The Hitchhiker’s Guide to AI - Mark Hinkle, Perip...
All Things Open
 
PDF
Fine-Tuning Large Language Models with Declarative ML Orchestration - Shivay ...
All Things Open
 
PDF
Leveraging Knowledge Graphs for RAG: A Smarter Approach to Contextual AI Appl...
All Things Open
 
PPTX
Artificial Intelligence Needs Community Intelligence - Sriram Raghavan, IBM R...
All Things Open
 
PDF
Don't just talk to AI, do more with AI: how to improve productivity with AI a...
All Things Open
 
PPTX
Open-Source GenAI vs. Enterprise GenAI: Navigating the Future of AI Innovatio...
All Things Open
 
PDF
The Death of the Browser - Rachel-Lee Nabors, AgentQL
All Things Open
 
PDF
Making Operating System updates fast, easy, and safe
All Things Open
 
PDF
Reshaping the landscape of belonging to transform community
All Things Open
 
PDF
The Unseen, Underappreciated Security Work Your Maintainers May (or may not) ...
All Things Open
 
PDF
Integrating Diversity, Equity, and Inclusion into Product Design
All Things Open
 
PDF
The Open Source Ecosystem for eBPF in Kubernetes
All Things Open
 
PDF
Open Source Privacy-Preserving Metrics - Sarah Gran & Brandon Pitman
All Things Open
 
Agentic AI for Developers and Data Scientists Build an AI Agent in 10 Lines o...
All Things Open
 
Big Data on a Small Budget: Scalable Data Visualization for the Rest of Us - ...
All Things Open
 
AI 3-in-1: Agents, RAG, and Local Models - Brent Laster
All Things Open
 
Let's Create a GitHub Copilot Extension! - Nick Taylor, Pomerium
All Things Open
 
Leveraging Pre-Trained Transformer Models for Protein Function Prediction - T...
All Things Open
 
Gen AI: AI Agents - Making LLMs work together in an organized way - Brent Las...
All Things Open
 
You Don't Need an AI Strategy, But You Do Need to Be Strategic About AI - Jes...
All Things Open
 
DON’T PANIC: AI IS COMING – The Hitchhiker’s Guide to AI - Mark Hinkle, Perip...
All Things Open
 
Fine-Tuning Large Language Models with Declarative ML Orchestration - Shivay ...
All Things Open
 
Leveraging Knowledge Graphs for RAG: A Smarter Approach to Contextual AI Appl...
All Things Open
 
Artificial Intelligence Needs Community Intelligence - Sriram Raghavan, IBM R...
All Things Open
 
Don't just talk to AI, do more with AI: how to improve productivity with AI a...
All Things Open
 
Open-Source GenAI vs. Enterprise GenAI: Navigating the Future of AI Innovatio...
All Things Open
 
The Death of the Browser - Rachel-Lee Nabors, AgentQL
All Things Open
 
Making Operating System updates fast, easy, and safe
All Things Open
 
Reshaping the landscape of belonging to transform community
All Things Open
 
The Unseen, Underappreciated Security Work Your Maintainers May (or may not) ...
All Things Open
 
Integrating Diversity, Equity, and Inclusion into Product Design
All Things Open
 
The Open Source Ecosystem for eBPF in Kubernetes
All Things Open
 
Open Source Privacy-Preserving Metrics - Sarah Gran & Brandon Pitman
All Things Open
 

Recently uploaded (20)

PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
PDF
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
PDF
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
PPT
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
PDF
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
NASA A Researcher’s Guide to International Space Station : Physical Sciences ...
Dr. PANKAJ DHUSSA
 
PDF
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PDF
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
PPTX
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
PDF
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
NASA A Researcher’s Guide to International Space Station : Physical Sciences ...
Dr. PANKAJ DHUSSA
 
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 

Choosing a Javascript Framework