SlideShare a Scribd company logo
1 of 37
Download to read offline
MILAN november 28th/29th 2014 
Giovanni Laquidara 
Join the Dart Side of Web Development. 
glaquidara@gmail.com - Google Developer Group Roma
MILAN november 28th/29th 2014 – Speaker's name 
dest templates 
Backbone Marionette 
Modernizr 
Backbone 
require.js 
jQuery 
moment.js 
PhantomJS 
Jasmine 
Docs 
Docs 
Docs 
Docs 
Docs 
Docs 
Docs 
Docs 
Docs
MILAN november 28th/29th 2014 – Speaker's name 
● Language 
● Libraries 
● Tools 
● Compilation to Javascript
MILAN november 28th/29th 2014 – Speaker's name 
Dart is open source 
● BSD-style license 
● dart.googlecode.com 
● GitHub mirror 
● Contributing guide 
● ECMA Standard (TC52) 
● Production ready (1.8)
MILAN november 28th/29th 2014 – Speaker's name 
Compile to JavaScript, runs across the modern web
MILAN november 28th/29th 2014 – Speaker's name 
Run Dart on 
the server with 
the Dart VM
MILAN november 28th/29th 2014 – Speaker's name 
import 'dart:math' show Random; // Import a class from a library. 
void main() { // The app starts executing here. 
print(new Dice(n: 12).roll()); // Print a new object's value. 
} 
class Dice { // Define a class. 
static Random shaker = new Random(); // Define a class variable. 
int sides, value; // Define instance variables. 
String toString() => '$value'; // Define a method using shorthand 
syntax. 
Dice({int n: 6}) { // Define a constructor. 
if (4 <= n && n <= 20) { 
sides = n; 
} else { 
throw new ArgumentError(/* */); // Support for errors and exceptions. 
} 
} 
int roll() { // Define an instance method. 
return value = shaker.nextInt(sides) + 1; // Get a random number. 
} 
}
MILAN november 28th/29th 2014 class H –u Spgeak er's{ name 
num strength; 
}
MILAN november 28th/29th 2014 class H –u Spgeak er's{ name 
num _strength; 
num get strength { 
// some code 
return this._strength; 
} 
set strength(num value) { 
// do something with value; 
this._strength = value; 
} 
}
MILAN november 28th/29th 2014 class H –u Spgeak er's{ name 
num _strength; 
Hug(strength) { 
this._strength = strength; 
} 
Hug.light(strength) { 
this._strength = 0; 
} 
}
MILAN november 28th/29th 2014 class H –u Spgeak er's{ name 
num _strength; 
Hug(this._strength); 
}
MILAN november 28th/29th 2014 class H –u Spgeak er's{ name 
num _strength; 
Hug(this._strength); 
Hug operator +(Hug other) { 
return new Hug(strength + 
other.strength); 
} 
}
MILAN november 28th/29th 2014 – Speaker's name 
var button = new ButtonElement(); 
button.id = 'fancy'; 
button.text = 'Click Point'; 
button.classes.add('important'); 
button.onClick.listen((e) => addTopHat()); 
parentElement.children.add(button);
MILAN november 28th/29th 2014 – Speaker's name 
var button = new ButtonElement(); 
..id = 'fancy'; 
..text = 'Click Point'; 
..classes.add(‘important'); 
..onClick.listen((e) => addTopHat()); 
parentElement.children.add(button);
MILAN november 28th/29th 2014 – Speaker's name 
Missing getter? 
"Coffee".missing // ?? 
Class 'String' has no instance getter 'missing'. 
NoSuchMethodError : method not found: 'missing' Receiver: 
"Coffee" 
Arguments: []
MILAN november 28th/29th 2014 – Speaker's name 
String compared to 
number? 
“2” > 1 // ?? 
Unhandled exception: 
Class 'String' has no instance method '>'. 
NoSuchMethodError : method not found: '>' 
Receiver: "2" 
Arguments: [1]
MILAN november 28th/29th 2014 – Speaker's name 
Lexical Closures? 
var talk = (s) => print(s); 
talk("Hi there");
MILAN november 28th/29th 2014 – Speaker's name 
void main() { 
String name = "Giovanni Laquidara"; 
print(initials(name)); 
} 
String initials(String name) { 
StringBuffer retValue = new StringBuffer(); 
name.split(" ").forEach( (String part ) { 
retValue.write(part[0] + '.'); 
}); 
return retValue.toString(); 
}
MILAN november 28th/29th 2014 – Speaker's name 
main() { 
var name = "Giovanni Laquidara"; 
print(initials(name)); 
} 
initials(name) { 
var retValue = new StringBuffer(); 
name.split(" ").forEach( ( part ) { 
retValue.write(part[0] + '.'); 
}); 
return retValue.toString(); 
}
MILAN november 28th/29th 2014 – Speaker's name 
import 'dart:html'; 
InputElement toDoInput; 
UListElement toDoList; 
void main() { 
toDoInput = querySelector("#to-do-input"); 
toDoList = querySelector("#to-do-list"); 
toDoInput.onChange.listen(addToDoItem); 
} 
void addToDoItem(Event event) { 
LIElement newToDo = new LIElement(); 
newToDo.text = toDoInput.value; 
toDoInput.value = ''; 
toDoList.children.add(newToDo); 
}
MILAN november 28th/29th 2014 – Speaker's name 
import 'dart:async' show Future, Completer; 
void main() { 
loadNews().then( (news) { 
//Do something with news 
}); 
print("Just print!"); 
} 
Future loadNews() { 
Completer completer = new Completer(); 
//Insert very slow process here 
completer.complete(); 
return completer.future; 
}
MILAN november 28th/29th 2014 – Speaker's name 
import 'dart:io'; 
main() { 
HttpServer.bind(InternetAddress.LOOPBACK_IP_V4, 4040) 
.then((HttpServer server) { 
print('listening on localhost, port $ 
{server.port}'); 
server.listen((HttpRequest request) { 
request.response.write('Hello, world!'); 
request.response.close(); 
}); 
}).catchError((e) => print(e.toString())); 
}
MILAN november 28th/29th 2014 – Speaker's name 
Use the tools you already know
MILAN november 28th/29th 2014 – Speaker's name 
Pub 
+1500 Packages 
https://pub.dartlang.org/
MILAN november 28th/29th 2014 – Speaker's name 
pubspec.yaml 
name: gdghunt 
description: A application using google play game services 
version: 0.1.0 
author: Giovanni Laquidara 
dependencies: 
googleapis: any 
googleapis_auth: any 
browser: any 
core_elements: ">=0.2.0 <0.3.0" 
polymer: ">=0.12.0 <0.13.0" 
paper_elements: ">=0.1.0 <0.2.0"
MILAN november 28th/29th 2014 – Speaker's name 
The web is full of links, yet web dev has no linker 
imports 
main Library 
calls 
foo bar boo 
baz 
Tree shaking 
dart2js 
main foo bar
MILAN november 28th/29th 2014 – Speaker's name 
(bigger is better) 
https://www.dartlang.org/performance
MILAN november 28th/29th 2014 – Speaker's name 
https://www.dartlang.org/cloud/
MILAN november 28th/29th 2014 – Speaker's name 
http://goo.gl/xpFhgY
MILAN november 28th/29th 2014 – Speaker's name
MILAN november 28th/29th 2014 – Speaker's name
MILAN november 28th/29th 2014 – Speaker's name 
Designed for Dart: use classes, annotations, and more. Build apps that scale. 
AngularDart brings the proven Angular philosophy of testable, succinct web development to Dart. 
AngularDart embraces modern web platform features, starting with Shadow DOM and Web Components.
MILAN november 28th/29th 2014 – Speaker's name 
Polymer 
https://www.dartlang.org/polymer/
MILAN november 28th/29th 2014 – Speaker's name 
And Games?
MILAN november 28th/29th 2014 – Speaker's name
MILAN november 28th/29th 2014 – Speaker's name 
Homepage: https://dartlang.org 
API Reference: https://api.dartlang.org 
Pub Packages: https://pub.dartlang.org
MILAN november 28th/29th 2014 – Speaker's name 
Giovanni Laquidara 
+GiovanniLaquidara 
@joaolaq 
joaobiriba 
http://roma.gdg.io/ 
thanks() => new FeedBack(); 
getQuestions().then( (what) { 
answer(what); 
});

More Related Content

Viewers also liked

Come realizzare giochi (e non solo) con il Myo - Giorgio Pomettini
Come realizzare giochi (e non solo) con il Myo - Giorgio PomettiniCome realizzare giochi (e non solo) con il Myo - Giorgio Pomettini
Come realizzare giochi (e non solo) con il Myo - Giorgio PomettiniCodemotion
 
Startup in Action - App bugtracker pitch
Startup in Action - App bugtracker pitchStartup in Action - App bugtracker pitch
Startup in Action - App bugtracker pitchCodemotion
 
Empowering the Mobile Web - Mills
Empowering the Mobile Web - MillsEmpowering the Mobile Web - Mills
Empowering the Mobile Web - MillsCodemotion
 
Siti web per device multipli by Dino esposito, Francesco Esposito
Siti web per device multipli by Dino esposito, Francesco EspositoSiti web per device multipli by Dino esposito, Francesco Esposito
Siti web per device multipli by Dino esposito, Francesco EspositoCodemotion
 
L'approccio Model-Driven Development per lo sviluppo Agile nell'ambito dell'I...
L'approccio Model-Driven Development per lo sviluppo Agile nell'ambito dell'I...L'approccio Model-Driven Development per lo sviluppo Agile nell'ambito dell'I...
L'approccio Model-Driven Development per lo sviluppo Agile nell'ambito dell'I...Codemotion
 
HTTP, WebSocket, SPDY: evoluzione dei protocolli web by Simone Bordet
HTTP, WebSocket, SPDY: evoluzione dei protocolli web by Simone BordetHTTP, WebSocket, SPDY: evoluzione dei protocolli web by Simone Bordet
HTTP, WebSocket, SPDY: evoluzione dei protocolli web by Simone BordetCodemotion
 
No more excuses left - let's build great things - Christian Heilmann - Codemo...
No more excuses left - let's build great things - Christian Heilmann - Codemo...No more excuses left - let's build great things - Christian Heilmann - Codemo...
No more excuses left - let's build great things - Christian Heilmann - Codemo...Codemotion
 
Integrare Arduino con Unity
Integrare Arduino con UnityIntegrare Arduino con Unity
Integrare Arduino con UnityCodemotion
 
AngularJS: How to code today with tomorrow tools
AngularJS: How to code today with tomorrow toolsAngularJS: How to code today with tomorrow tools
AngularJS: How to code today with tomorrow toolsCodemotion
 
DESIGN BIOMETRICO PER CASUAL GAMES: tra macchine della verita' e bestie di ca...
DESIGN BIOMETRICO PER CASUAL GAMES: tra macchine della verita' e bestie di ca...DESIGN BIOMETRICO PER CASUAL GAMES: tra macchine della verita' e bestie di ca...
DESIGN BIOMETRICO PER CASUAL GAMES: tra macchine della verita' e bestie di ca...Codemotion
 
Real-time discovery e sentiment analysis su Twitter: BlogmeterNow - Vittorio ...
Real-time discovery e sentiment analysis su Twitter: BlogmeterNow - Vittorio ...Real-time discovery e sentiment analysis su Twitter: BlogmeterNow - Vittorio ...
Real-time discovery e sentiment analysis su Twitter: BlogmeterNow - Vittorio ...Codemotion
 
Cara cloud, ha chiamato l’utente, rivuole la sicurezza by Alessandro Manfredi
Cara cloud, ha chiamato l’utente, rivuole la sicurezza by Alessandro ManfrediCara cloud, ha chiamato l’utente, rivuole la sicurezza by Alessandro Manfredi
Cara cloud, ha chiamato l’utente, rivuole la sicurezza by Alessandro ManfrediCodemotion
 
Vintage Web Programming with Python by Massimiliano Pippi
Vintage Web Programming with Python by Massimiliano PippiVintage Web Programming with Python by Massimiliano Pippi
Vintage Web Programming with Python by Massimiliano PippiCodemotion
 
User Group e Community : quello che possono fare per te, quello che puoi fare...
User Group e Community : quello che possono fare per te, quello che puoi fare...User Group e Community : quello che possono fare per te, quello che puoi fare...
User Group e Community : quello che possono fare per te, quello che puoi fare...Codemotion
 
The magic world of APT 0.6 - Pompili
The magic world of APT 0.6 - Pompili The magic world of APT 0.6 - Pompili
The magic world of APT 0.6 - Pompili Codemotion
 
Value Team: IT al servizio dell’innovazione
Value Team: IT al servizio dell’innovazioneValue Team: IT al servizio dell’innovazione
Value Team: IT al servizio dell’innovazioneCodemotion
 
Sviluppare plugin per google Chrome
Sviluppare plugin per google ChromeSviluppare plugin per google Chrome
Sviluppare plugin per google ChromeCodemotion
 

Viewers also liked (18)

Come realizzare giochi (e non solo) con il Myo - Giorgio Pomettini
Come realizzare giochi (e non solo) con il Myo - Giorgio PomettiniCome realizzare giochi (e non solo) con il Myo - Giorgio Pomettini
Come realizzare giochi (e non solo) con il Myo - Giorgio Pomettini
 
Startup in Action - App bugtracker pitch
Startup in Action - App bugtracker pitchStartup in Action - App bugtracker pitch
Startup in Action - App bugtracker pitch
 
Empowering the Mobile Web - Mills
Empowering the Mobile Web - MillsEmpowering the Mobile Web - Mills
Empowering the Mobile Web - Mills
 
Siti web per device multipli by Dino esposito, Francesco Esposito
Siti web per device multipli by Dino esposito, Francesco EspositoSiti web per device multipli by Dino esposito, Francesco Esposito
Siti web per device multipli by Dino esposito, Francesco Esposito
 
L'approccio Model-Driven Development per lo sviluppo Agile nell'ambito dell'I...
L'approccio Model-Driven Development per lo sviluppo Agile nell'ambito dell'I...L'approccio Model-Driven Development per lo sviluppo Agile nell'ambito dell'I...
L'approccio Model-Driven Development per lo sviluppo Agile nell'ambito dell'I...
 
HTTP, WebSocket, SPDY: evoluzione dei protocolli web by Simone Bordet
HTTP, WebSocket, SPDY: evoluzione dei protocolli web by Simone BordetHTTP, WebSocket, SPDY: evoluzione dei protocolli web by Simone Bordet
HTTP, WebSocket, SPDY: evoluzione dei protocolli web by Simone Bordet
 
No more excuses left - let's build great things - Christian Heilmann - Codemo...
No more excuses left - let's build great things - Christian Heilmann - Codemo...No more excuses left - let's build great things - Christian Heilmann - Codemo...
No more excuses left - let's build great things - Christian Heilmann - Codemo...
 
Integrare Arduino con Unity
Integrare Arduino con UnityIntegrare Arduino con Unity
Integrare Arduino con Unity
 
AngularJS: How to code today with tomorrow tools
AngularJS: How to code today with tomorrow toolsAngularJS: How to code today with tomorrow tools
AngularJS: How to code today with tomorrow tools
 
DESIGN BIOMETRICO PER CASUAL GAMES: tra macchine della verita' e bestie di ca...
DESIGN BIOMETRICO PER CASUAL GAMES: tra macchine della verita' e bestie di ca...DESIGN BIOMETRICO PER CASUAL GAMES: tra macchine della verita' e bestie di ca...
DESIGN BIOMETRICO PER CASUAL GAMES: tra macchine della verita' e bestie di ca...
 
Real-time discovery e sentiment analysis su Twitter: BlogmeterNow - Vittorio ...
Real-time discovery e sentiment analysis su Twitter: BlogmeterNow - Vittorio ...Real-time discovery e sentiment analysis su Twitter: BlogmeterNow - Vittorio ...
Real-time discovery e sentiment analysis su Twitter: BlogmeterNow - Vittorio ...
 
Cara cloud, ha chiamato l’utente, rivuole la sicurezza by Alessandro Manfredi
Cara cloud, ha chiamato l’utente, rivuole la sicurezza by Alessandro ManfrediCara cloud, ha chiamato l’utente, rivuole la sicurezza by Alessandro Manfredi
Cara cloud, ha chiamato l’utente, rivuole la sicurezza by Alessandro Manfredi
 
Vintage Web Programming with Python by Massimiliano Pippi
Vintage Web Programming with Python by Massimiliano PippiVintage Web Programming with Python by Massimiliano Pippi
Vintage Web Programming with Python by Massimiliano Pippi
 
User Group e Community : quello che possono fare per te, quello che puoi fare...
User Group e Community : quello che possono fare per te, quello che puoi fare...User Group e Community : quello che possono fare per te, quello che puoi fare...
User Group e Community : quello che possono fare per te, quello che puoi fare...
 
The magic world of APT 0.6 - Pompili
The magic world of APT 0.6 - Pompili The magic world of APT 0.6 - Pompili
The magic world of APT 0.6 - Pompili
 
Bandscloud
BandscloudBandscloud
Bandscloud
 
Value Team: IT al servizio dell’innovazione
Value Team: IT al servizio dell’innovazioneValue Team: IT al servizio dell’innovazione
Value Team: IT al servizio dell’innovazione
 
Sviluppare plugin per google Chrome
Sviluppare plugin per google ChromeSviluppare plugin per google Chrome
Sviluppare plugin per google Chrome
 

More from Codemotion

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Codemotion
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyCodemotion
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaCodemotion
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserCodemotion
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Codemotion
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Codemotion
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Codemotion
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 - Codemotion
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Codemotion
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Codemotion
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Codemotion
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Codemotion
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Codemotion
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Codemotion
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Codemotion
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...Codemotion
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Codemotion
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Codemotion
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Codemotion
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Codemotion
 

More from Codemotion (20)

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending story
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
 

Recently uploaded

Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 

Recently uploaded (20)

Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 

Join the Dart Side of Web Development - Giovanni Laquidara - Codemotion Milan 2014

  • 1. MILAN november 28th/29th 2014 Giovanni Laquidara Join the Dart Side of Web Development. glaquidara@gmail.com - Google Developer Group Roma
  • 2. MILAN november 28th/29th 2014 – Speaker's name dest templates Backbone Marionette Modernizr Backbone require.js jQuery moment.js PhantomJS Jasmine Docs Docs Docs Docs Docs Docs Docs Docs Docs
  • 3. MILAN november 28th/29th 2014 – Speaker's name ● Language ● Libraries ● Tools ● Compilation to Javascript
  • 4. MILAN november 28th/29th 2014 – Speaker's name Dart is open source ● BSD-style license ● dart.googlecode.com ● GitHub mirror ● Contributing guide ● ECMA Standard (TC52) ● Production ready (1.8)
  • 5. MILAN november 28th/29th 2014 – Speaker's name Compile to JavaScript, runs across the modern web
  • 6. MILAN november 28th/29th 2014 – Speaker's name Run Dart on the server with the Dart VM
  • 7. MILAN november 28th/29th 2014 – Speaker's name import 'dart:math' show Random; // Import a class from a library. void main() { // The app starts executing here. print(new Dice(n: 12).roll()); // Print a new object's value. } class Dice { // Define a class. static Random shaker = new Random(); // Define a class variable. int sides, value; // Define instance variables. String toString() => '$value'; // Define a method using shorthand syntax. Dice({int n: 6}) { // Define a constructor. if (4 <= n && n <= 20) { sides = n; } else { throw new ArgumentError(/* */); // Support for errors and exceptions. } } int roll() { // Define an instance method. return value = shaker.nextInt(sides) + 1; // Get a random number. } }
  • 8. MILAN november 28th/29th 2014 class H –u Spgeak er's{ name num strength; }
  • 9. MILAN november 28th/29th 2014 class H –u Spgeak er's{ name num _strength; num get strength { // some code return this._strength; } set strength(num value) { // do something with value; this._strength = value; } }
  • 10. MILAN november 28th/29th 2014 class H –u Spgeak er's{ name num _strength; Hug(strength) { this._strength = strength; } Hug.light(strength) { this._strength = 0; } }
  • 11. MILAN november 28th/29th 2014 class H –u Spgeak er's{ name num _strength; Hug(this._strength); }
  • 12. MILAN november 28th/29th 2014 class H –u Spgeak er's{ name num _strength; Hug(this._strength); Hug operator +(Hug other) { return new Hug(strength + other.strength); } }
  • 13. MILAN november 28th/29th 2014 – Speaker's name var button = new ButtonElement(); button.id = 'fancy'; button.text = 'Click Point'; button.classes.add('important'); button.onClick.listen((e) => addTopHat()); parentElement.children.add(button);
  • 14. MILAN november 28th/29th 2014 – Speaker's name var button = new ButtonElement(); ..id = 'fancy'; ..text = 'Click Point'; ..classes.add(‘important'); ..onClick.listen((e) => addTopHat()); parentElement.children.add(button);
  • 15. MILAN november 28th/29th 2014 – Speaker's name Missing getter? "Coffee".missing // ?? Class 'String' has no instance getter 'missing'. NoSuchMethodError : method not found: 'missing' Receiver: "Coffee" Arguments: []
  • 16. MILAN november 28th/29th 2014 – Speaker's name String compared to number? “2” > 1 // ?? Unhandled exception: Class 'String' has no instance method '>'. NoSuchMethodError : method not found: '>' Receiver: "2" Arguments: [1]
  • 17. MILAN november 28th/29th 2014 – Speaker's name Lexical Closures? var talk = (s) => print(s); talk("Hi there");
  • 18. MILAN november 28th/29th 2014 – Speaker's name void main() { String name = "Giovanni Laquidara"; print(initials(name)); } String initials(String name) { StringBuffer retValue = new StringBuffer(); name.split(" ").forEach( (String part ) { retValue.write(part[0] + '.'); }); return retValue.toString(); }
  • 19. MILAN november 28th/29th 2014 – Speaker's name main() { var name = "Giovanni Laquidara"; print(initials(name)); } initials(name) { var retValue = new StringBuffer(); name.split(" ").forEach( ( part ) { retValue.write(part[0] + '.'); }); return retValue.toString(); }
  • 20. MILAN november 28th/29th 2014 – Speaker's name import 'dart:html'; InputElement toDoInput; UListElement toDoList; void main() { toDoInput = querySelector("#to-do-input"); toDoList = querySelector("#to-do-list"); toDoInput.onChange.listen(addToDoItem); } void addToDoItem(Event event) { LIElement newToDo = new LIElement(); newToDo.text = toDoInput.value; toDoInput.value = ''; toDoList.children.add(newToDo); }
  • 21. MILAN november 28th/29th 2014 – Speaker's name import 'dart:async' show Future, Completer; void main() { loadNews().then( (news) { //Do something with news }); print("Just print!"); } Future loadNews() { Completer completer = new Completer(); //Insert very slow process here completer.complete(); return completer.future; }
  • 22. MILAN november 28th/29th 2014 – Speaker's name import 'dart:io'; main() { HttpServer.bind(InternetAddress.LOOPBACK_IP_V4, 4040) .then((HttpServer server) { print('listening on localhost, port $ {server.port}'); server.listen((HttpRequest request) { request.response.write('Hello, world!'); request.response.close(); }); }).catchError((e) => print(e.toString())); }
  • 23. MILAN november 28th/29th 2014 – Speaker's name Use the tools you already know
  • 24. MILAN november 28th/29th 2014 – Speaker's name Pub +1500 Packages https://pub.dartlang.org/
  • 25. MILAN november 28th/29th 2014 – Speaker's name pubspec.yaml name: gdghunt description: A application using google play game services version: 0.1.0 author: Giovanni Laquidara dependencies: googleapis: any googleapis_auth: any browser: any core_elements: ">=0.2.0 <0.3.0" polymer: ">=0.12.0 <0.13.0" paper_elements: ">=0.1.0 <0.2.0"
  • 26. MILAN november 28th/29th 2014 – Speaker's name The web is full of links, yet web dev has no linker imports main Library calls foo bar boo baz Tree shaking dart2js main foo bar
  • 27. MILAN november 28th/29th 2014 – Speaker's name (bigger is better) https://www.dartlang.org/performance
  • 28. MILAN november 28th/29th 2014 – Speaker's name https://www.dartlang.org/cloud/
  • 29. MILAN november 28th/29th 2014 – Speaker's name http://goo.gl/xpFhgY
  • 30. MILAN november 28th/29th 2014 – Speaker's name
  • 31. MILAN november 28th/29th 2014 – Speaker's name
  • 32. MILAN november 28th/29th 2014 – Speaker's name Designed for Dart: use classes, annotations, and more. Build apps that scale. AngularDart brings the proven Angular philosophy of testable, succinct web development to Dart. AngularDart embraces modern web platform features, starting with Shadow DOM and Web Components.
  • 33. MILAN november 28th/29th 2014 – Speaker's name Polymer https://www.dartlang.org/polymer/
  • 34. MILAN november 28th/29th 2014 – Speaker's name And Games?
  • 35. MILAN november 28th/29th 2014 – Speaker's name
  • 36. MILAN november 28th/29th 2014 – Speaker's name Homepage: https://dartlang.org API Reference: https://api.dartlang.org Pub Packages: https://pub.dartlang.org
  • 37. MILAN november 28th/29th 2014 – Speaker's name Giovanni Laquidara +GiovanniLaquidara @joaolaq joaobiriba http://roma.gdg.io/ thanks() => new FeedBack(); getQuestions().then( (what) { answer(what); });