SlideShare a Scribd company logo
1 of 134
Download to read offline
OdessaJS 2018 - @rowdyrabouw
Unleashyour
web skills
on native!
Web developer
mood coaster
web developer
in natural habitat
web developer
• HTML
• CSS
• JavaScript
• Sass
• Node Package Manager
#OdessaJS - @rowdyrabouw 7/134
web developer
on native iOS /Android
web developer & native
• App stores
• Provisioning files
• Java or Kotlin for Android
• Objective-C or Swift for iOS
#OdessaJS - @rowdyrabouw 10/134
web developer
with nativescript
web developer & nativescript
• App stores
• Provisioning files
• NativeScript
• HTML, CSS, JavaScript
• Sass
• Node Package Manager
#OdessaJS - @rowdyrabouw 13/134
web developer
❤ nativescript
who?
Rowdy Rabouw@rowdyrabouw
Gouda, The Netherlands
I ❤ superhero movies
Freelance web and app developer
Lead developer Nationale-Nederlanden Pension App
Progress Developer Expert for Nativescript
#OdessaJS - @rowdyrabouw 17/134
MobileApp
framework
decision guide
MobileAppframework decision guide
Do you want/need a native User Interface and native performance?
No Yes
#OdessaJS - @rowdyrabouw 20/134
MobileAppframework decision guide
Do you want/need a native User Interface and native performance?
No Yes
Phonegap / Cordova with Ionic
• WebView
• DOM to manipulate
• HTML styled like native
#OdessaJS - @rowdyrabouw 21/134
MobileAppframework decision guide
Do you want/need a native User Interface and native performance?
No Yes
Phonegap / Cordova with Ionic
• WebView
• DOM to manipulate
• HTML styled like native
continue
#OdessaJS - @rowdyrabouw 22/134
MobileAppframework decision guide
Do you have too much money and time?
Yes No
#OdessaJS - @rowdyrabouw 23/134
MobileAppframework decision guide
Do you have too much money and time?
Yes No
Native iOS and Android
• Twice the work
#OdessaJS - @rowdyrabouw 24/134
MobileAppframework decision guide
Do you have too much money and time?
Yes No
Native iOS and Android
• Twice the work
continue
#OdessaJS - @rowdyrabouw 25/134
MobileAppframework decision guide
Do you potentially want/need to share code with the web?
Or do you want/need to use web technologies?
No Yes
#OdessaJS - @rowdyrabouw 26/134
MobileAppframework decision guide
Do you potentially want/need to share code with the web?
Or do you want/need to use web technologies?
No Yes
Xamarin
• .NET or C#
• Cross compiling
• Bindings to access native APIs
#OdessaJS - @rowdyrabouw 27/134
MobileAppframework decision guide
Do you potentially want/need to share code with the web?
Or do you want/need to use web technologies?
No Yes
Flutter
• Dart
• Cross compiling
• Beta
#OdessaJS - @rowdyrabouw 28/134
MobileAppframework decision guide
Do you potentially want/need to share code with the web?
Or do you want/need to use web technologies?
No Yes
Flutter
• Dart
• Cross compiling
• Beta
continue
#OdessaJS - @rowdyrabouw 29/134
MobileAppframework decision guide
Do you want to use modern JavaScript?
No Yes
#OdessaJS - @rowdyrabouw 30/134
MobileAppframework decision guide
Do you want to use modern JavaScript?
No Yes
Titanium
• No ES6/ES2015 support
• Can't use NPM
• Old MVC framework (Alloy)
#OdessaJS - @rowdyrabouw 31/134
MobileAppframework decision guide
Do you want to use modern JavaScript?
No Yes
Titanium
• No ES6/ES2015 support
• Can't use NPM
• Old MVC framework (Alloy)
continue
#OdessaJS - @rowdyrabouw 32/134
MobileAppframework decision guide
Do you know and like React?
Yes No
#OdessaJS - @rowdyrabouw 33/134
MobileAppframework decision guide
Do you know and like React?
Yes No
React Native
• React
• Native code to access APIs
• Version 0.55
#OdessaJS - @rowdyrabouw 34/134
MobileAppframework decision guide
Do you know and like React?
Yes No
React Native
• React
• Native code to access APIs
• Version 0.55
continue
#OdessaJS - @rowdyrabouw 35/134
NATIVESCRIPT
NATIVESCRIPT
What is NativeScript?
• Open source framework for building truly native mobile apps
• JavaScript, markup (XML/HTML) and CSS
• Native code inside your JavaScript if you want and dare
• Cross Platform: one codebase for iOS and Android
• Backed by software company Progress
• Android 4.2 or a later stable official release
• iOS 7.0 or later stable official release
#OdessaJS - @rowdyrabouw 39/134
Nice ...butgetme upto speed
# install Homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
# install Node.js
brew install node
# install NativeScript CLI
npm install -g nativescript
# install iOS and Android requirements
# Windows
@powershell -NoProfile -ExecutionPolicy Bypass -Command
"iex ((new-object net.webclient).DownloadString('https://www.nativescript.org/setup/win'))"
# macOS
ruby -e "$(curl -fsSL https://www.nativescript.org/setup/mac)"
#OdessaJS - @rowdyrabouw 42/134
# NativeScript CLI (tns = Telerik NativeScript)
tns <Command> [Command Parameters] [--command <Options>]
tns create <app-name>
tns create <app-name> --tsc
tns create <app-name> --ng
vue init nativescript-vue/vue-cli-template <app-name>
tns create <app-name> --template <template-url>
tns platform add ios
tns platform add android
tns build ios
tns build android
tns run ios
tns run android
#OdessaJS - @rowdyrabouw 43/134
docs.nativescript.org
nativescript.org/get-the-nativescript-book
nativescripting.com
nativescript.org/nativescript-sidekick
play.nativescript.org
forum.nativescript.org
nativescriptcommunity.slack.com
markuplike on theweb
Markuphttp://2xr.nl/markup
https://docs.nativescript.org/ui/components
<ActionBar title="Native elements"/>
<StackLayout>
<Button text="Button" tap="{{ onButtonTap }}"/>
<Switch checked="false"/>
<SegmentedBar items="{{ segmentedBarItems }}"/>
<Progress value="0" maxValue="100"/>
<Slider value="0" minValue="0" maxValue="100"/>
<DatePicker year="2018" month="1" day="1"
minDate="1970-01-01" maxDate="2100-12-31"/>
</StackLayout>
#OdessaJS - @rowdyrabouw 53/134
TextFieldhttps://docs.nativescript.org/api-reference/modules/_ui_text_field_.textfield
<TextField/>
<TextField text=""/>
<TextField hint="Enter your name"/>
#OdessaJS - @rowdyrabouw 55/134
TextField:autocapitalizationhttps://docs.nativescript.org/api-reference/modules/_ui_text_field_.textfield
<TextField autocapitalizationType="allCharacters"/>
<TextField autocapitalizationType="sentences"/>
<TextField autocapitalizationType="words"/>
#OdessaJS - @rowdyrabouw 56/134
TextField:autocapitalizationhttps://docs.nativescript.org/api-reference/modules/_ui_text_field_.textfield
<TextField autocapitalizationType="allCharacters"/>
<TextField autocapitalizationType="sentences"/>
<TextField autocapitalizationType="words"/>
<TextField autocapitalizationType="none"/>
#OdessaJS - @rowdyrabouw 57/134
TextField:autocorrecthttps://docs.nativescript.org/api-reference/modules/_ui_text_field_.textfield
<TextField autocorrect="true"/>
<TextField autocorrect="false"/>
#OdessaJS - @rowdyrabouw 58/134
TextField: keyboardTypehttp://2xr.nl/keyboardType
https://docs.nativescript.org/api-reference/modules/_ui_enums_.keyboardtype
<TextField keyboardType="number"/>
<TextField keyboardType="datetime"/>
<TextField keyboardType="phone"/>
<TextField keyboardType="email"/>
<TextField keyboardType="url"/>
#OdessaJS - @rowdyrabouw 59/134
TextField: moreattributeshttps://docs.nativescript.org/api-reference/modules/_ui_text_field_.textfield
<TextField textAlignment=""/>
<TextField visibility=""/>
<TextField width=""/>
<TextField maxLength=""/>
#OdessaJS - @rowdyrabouw 61/134
Layoutshttps://docs.nativescript.org/ui/layouts
#OdessaJS - @rowdyrabouw 62/134
Layoutshttps://docs.nativescript.org/ui/layouts
#OdessaJS - @rowdyrabouw 63/134
DockLayouthttps://docs.nativescript.org/ui/layouts
<DockLayout height="100%"
stretchLastChild="true">
<Label text="1" dock="top"/>
<Label text="2" dock="bottom"/>
<Label text="3" dock="right"/>
<Label text="4" dock="left"/>
</DockLayout>
<!--
1 + 2 have fixed height
3 has fixed width
4 will get all remaining space
-->
#OdessaJS - @rowdyrabouw 64/134
GridLayouthttps://docs.nativescript.org/ui/layouts
<GridLayout
rows="100, auto, *"
columns="100, auto, *">
<Label text="1" row="0" col="0">
<Label text="2" row="0" col="1"
colSpan="2"/>
<Label text="3" row="1" col="0"
rowSpan="2"/>
<Label text="4" row="1" col="1"/>
<Label text="5" row="1" col="2"/>
<Label text="6" row="2" col="1"/>
<Label text="7" row="2" col="2"/>
</GridLayout>
#OdessaJS - @rowdyrabouw 65/134
Cascading
Style Sheets
Cascading Style Sheetshttps://docs.nativescript.org/ui/styling
• a large subset of CSS properties is supported
• device-independent pixels
• application-wide, page-specific or inline
• platform-specific possible
• animations
• SASS
#OdessaJS - @rowdyrabouw 68/134
{N} CoreThemeshttps://docs.nativescript.org/ui/theme
• ready to use color schemes
• tailored for iOS and Android
#OdessaJS - @rowdyrabouw
NativeScriptTheme Builderhttps://www.nativescriptthemebuilder.com
#OdessaJS - @rowdyrabouw 70/134
TabView
<TabView height="100%">
<StackLayout *tabItem="{title: 'Rocket Raccoon'}" class="full rocket"/>
<StackLayout *tabItem="{title: 'Harley Quinn'}" class="full harley"/>
<StackLayout *tabItem="{title: 'Hulk'}" class="full hulk"/>
</TabView>
#OdessaJS - @rowdyrabouw 71/134
TabView
.full {
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}
.rocket { background-image: url("~/images/rocket-raccoon.jpg"); }
.harley { background-image: url("~/images/harley-quinn.jpg"); }
.hulk { background-image: url("~/images/hulk.jpg"); }
#OdessaJS - @rowdyrabouw 72/134
Fantastic 4
Choices
4 Fantastic
Choices
JavaScript
TypeScript
Vue.js
Angular
Native Code
Objective-C
{N}Angular directorystructure
app/components/slider/
slider.component.html
slider.component.css
slider.component.ts
slider-routing.module.ts
slider-module.ts
#OdessaJS - @rowdyrabouw 83/134
slider.component.html
<StackLayout>
<Slider></Slider>
</StackLayout>
#OdessaJS - @rowdyrabouw 84/134
slider.component.css
StackLayout {
padding: 50;
}
#OdessaJS - @rowdyrabouw 85/134
slider.component.ts
import { Component } from "@angular/core";
@Component({
selector: "app-slider",
moduleId: module.id,
templateUrl: "slider.component.html",
styleUrls: ["slider.component.css"]
})
export class SliderComponent {
constructor() {}
}
#OdessaJS - @rowdyrabouw 86/134
#OdessaJS - @rowdyrabouw 87/134
slider.component.html
<StackLayout>
<Slider slider-icon></Slider>
</StackLayout>
• attribute directive
• changes the appearance or behavior of an element
#OdessaJS - @rowdyrabouw 88/134
slider.directive.ts
import { Directive, ElementRef } from "@angular/core";
import { isIOS } from "platform";
@Directive({
selector: "[slider-icon]"
})
export class SliderIconDirective {
constructor(private el: ElementRef) {
if (isIOS) {
let uiSlider = this.el.nativeElement.ios;
uiSlider.setThumbImageForState(
UIImage.imageNamed("image.png"), UIControlState.Normal);
}
}
}
#OdessaJS - @rowdyrabouw 89/134
slider.directive.ts
import { Directive, ElementRef } from "@angular/core";
import { isIOS } from "platform";
@Directive({
selector: "[slider-icon]"
})
export class SliderIconDirective {
constructor(private el: ElementRef) {
if (isIOS) {
let uiSlider = this.el.nativeElement.ios;
uiSlider.setThumbImageForState(
UIImage.imageNamed("image.png"), UIControlState.Normal);
}
}
}
#OdessaJS - @rowdyrabouw 90/134
slider.directive.ts
import { Directive, ElementRef } from "@angular/core";
import { isIOS } from "platform";
@Directive({
selector: "[slider-icon]"
})
export class SliderIconDirective {
constructor(private el: ElementRef) {
if (isIOS) {
let uiSlider = this.el.nativeElement.ios;
uiSlider.setThumbImageForState(
UIImage.imageNamed("image.png"), UIControlState.Normal);
}
}
}
#OdessaJS - @rowdyrabouw 91/134
slider.module.ts
import { NgModule, NO_ERRORS_SCHEMA } from "@angular/core";
import { NativeScriptModule } from "nativescript-angular/nativescript.module";
import { SliderIconDirective } from "./slider.directive";
import { SliderRoutingModule } from "./slider-routing.module";
import { SliderComponent } from "./slider.component";
@NgModule({
imports: [NativeScriptModule, SliderRoutingModule],
declarations: [SliderComponent, SliderIconDirective],
schemas: [NO_ERRORS_SCHEMA]
})
export class SliderModule {}
#OdessaJS - @rowdyrabouw 92/134
93/134
slider.component.html
<StackLayout>
<AbsoluteLayout>
<StackLayout #background class="captain" top="0" left="0"></StackLayout>
<FlexboxLayout class="flexcontainer" top="0" left="0">
<Slider slider-icon (valueChange)="onSliderChange($event)"></Slider>
</FlexboxLayout>
</AbsoluteLayout>
</StackLayout>
#OdessaJS - @rowdyrabouw 94/134
slider.component.css
.captain {
background-image: url("~/assets/images/captain-america.jpg");
background-repeat: no-repeat;
background-position: center;
background-size: cover;
height: 100%;
width: 100%;
opacity: 0;
}
#OdessaJS - @rowdyrabouw 95/134
slider.component.css
.flexcontainer {
justify-content: center;
align-items: center;
height: 100%;
width: 100%;
}
Slider {
width: 80%;
background-color: #BC1A0F;
}
ActionBar {
background-color: #FFFFFF;
}
#OdessaJS - @rowdyrabouw 96/134
slider.component.ts
import { Component, OnInit, ViewChild, ElementRef } from "@angular/core";
import { Page } from "ui/page";
import { Slider } from "ui/slider";
import { StackLayout } from "ui/layouts/stack-layout";
import { TNSPlayer } from "nativescript-audio";
@Component({
selector: "app-slider",
moduleId: module.id,
templateUrl: "slider.component.html",
styleUrls: ["slider.component.css"]
})
#OdessaJS - @rowdyrabouw 97/134
slider.component.ts
export class SliderComponent implements OnInit {
@ViewChild("background") background: ElementRef;
private viewStack: StackLayout;
private player: TNSPlayer;
constructor(private page: Page) {}
ngOnInit() {
this.page.actionBarHidden = true;
this.viewStack = this.background.nativeElement;
this.player = new TNSPlayer();
this.player.initFromFile({
audioFile: "~/assets/audio/captain.mp3",
loop: false
});
}
#OdessaJS - @rowdyrabouw 98/134
slider.component.ts
onSliderValueChange(args) {
let slider = <Slider>args.object;
// opacity and volume range is 0 - 1
let sliderValue = slider.value / 100;
this.viewStack.opacity = sliderValue;
if (Math.round(slider.value) > 0) {
this.player.play();
this.player.volume = sliderValue;
} else {
this.player.seekTo(0);
this.player.pause();
}
}
}
#OdessaJS - @rowdyrabouw 99/134
Packages
& Libraries
Node Package Manager
• commonly known as npm
• ready to use JavaScript modules
• about 650.000 packages of free, reusable code
#OdessaJS - @rowdyrabouw 102/134
AndroidArsenal
• libraries for Android (Java / Kotlin)
Cocoapods
• libraries for iOS (Objective-C / Swift)
#OdessaJS - @rowdyrabouw 103/134
Multilingual:
ngx-translate
Multilingual: ngx-translate
• internationalization library for Angular 2+
• define translations in different languages
• switch between them easily
• no hardcoded text/labels, all in one place
• start directly, even with one language
#OdessaJS - @rowdyrabouw 106/134
Multilingual: ngx-translate
{
"HOME": {
"TITLE": "Hello OdessaJS!",
"TEXT": "It's great to be here and introduce NativeScript to you.",
"SLIDER": "Slider",
"ENGLISH": "English",
"FOREIGN": "Ukrainian",
"MIP": "WowWee MiP",
"SPEECH_RECOGNITION": "Speech recognition!"
}
}
#OdessaJS - @rowdyrabouw 107/134
Multilingual: ngx-translate
<ActionBar
[title]="'HOME.TITLE' | translate">
</ActionBar>
<Button
[text]="'HOME.FOREIGN' | translate"
(tap)="changeLanguage('uk')">
</Button>
[] = one way data binding in Angular
| = display-value transformations
#OdessaJS - @rowdyrabouw 108/134
109/134
NativeScript
Plugins
Whatare {N} plugins?
When the NativeScript core modules do not provide the native
device or platform capability that you need, you can use plugins.
• usually for both iOS and Android
• JavaScript interface to native platform code
#OdessaJS - @rowdyrabouw 112/134
#OdessaJS - @rowdyrabouw 113/134
Nativescriptplugins
• nativescript-bluetooth
• nativescript-accelerometer
• nativescript-speech-recognition
#OdessaJS - @rowdyrabouw 114/134
Nativescriptplugins
• nativescript-texttospeech
• nativescript-directions
• nativescript-videoplayer
#OdessaJS - @rowdyrabouw 115/134
{N} Plugins
(live) demo
#OdessaJS - @rowdyrabouw 117/134
WowWee Mip Robot 118/134
nativescript-bluetooth
import * as bluetooth from "nativescript-bluetooth";
bluetooth.startScanning({
seconds: 4,
onDiscovered: peripheral => {
if (peripheral.UUID == "CA9F644C-1920-4572-8833-1D137A6T2A05") {
bluetooth.connect({
UUID: peripheral.UUID,
onConnected: peripheral => {
bluetooth.stopScanning();
// do stuff
}
});
}
}
});
#OdessaJS - @rowdyrabouw 119/134
nativescript-accelerometer
import { startAccelerometerUpdates } from "nativescript-accelerometer";
startAccelerometerUpdates(data => {
// lean left (0 to -1) / right (0 to 1)
let leftOrRight = data.x;
// lean forward (0 to -1) / back (0 to 1)
let forwardOrBack = data.y;
// do stuff
});
#OdessaJS - @rowdyrabouw 120/134
Introduction 121/134
nativescript-speech-recognition
import { SpeechRecognition, SpeechRecognitionTranscription }
from "nativescript-speech-recognition";
private speechRecognition = new SpeechRecognition();
this.speechRecognition.available().then(
(available: boolean) => console.log(available ? "YES!" : "NO"),
(err: string) => console.log(err)
);
this.speechRecognition.requestPermission().then((granted: boolean) => {
console.log("Granted? " + granted);
});
#OdessaJS - @rowdyrabouw 122/134
nativescript-speech-recognition
this.speechRecognition.startListening({
locale: "en-US",
returnPartialResults: true,
onResult: (transcription: SpeechRecognitionTranscription) => {
console.log(`User said: ${transcription.text}`);
}
});
this.speechRecognition.stopListening().then(() => {
// do something with the recognized text
});
#OdessaJS - @rowdyrabouw 123/134
nativescript-texttospeech
import { TNSTextToSpeech, SpeakOptions }
from "nativescript-texttospeech";
let textToSpeech = new TNSTextToSpeech();
let speakOptions: SpeakOptions = {
text: "Hello world!",
locale: "en-US",
speakRate: 0.5,
pitch: 0.8
};
textToSpeech.speak(speakOptions);
.
#OdessaJS - @rowdyrabouw 124/134
Weather 125/134
Angular httpClient
const apiUrl = "https://api.darksky.net/forecast/...../";
const city = { name: "Gouda", country: "The Netherlands",
latitude: 52.0115205, longitude: 4.7104633 };
let params = city.latitude + "," + city.longitude;
this.httpClient.get(apiUrl + params).subscribe(res => {
// do something with the json data
});
#OdessaJS - @rowdyrabouw 126/134
Directions 127/134
nativescript-directions
import { Directions } from "nativescript-directions";
let directions = new Directions();
directions.navigate({
// optional, default "current location"
from: {
lat: 46.433131,
lng: 30.7618338
},
// if an Array is passed, the last item is the destination,
// the addresses in between are "waypoints"
to: [{
address: "Vorontsovs'kyi Ln, 4, Odessa", // One Wall House
},
{
address: "Potemkin Stairs, Odesa, Ukraine"
}],
ios: {
preferGoogleMaps: true,
allowGoogleMapsWeb: true
}
})
#OdessaJS - @rowdyrabouw 128/134
Movie trailer 129/134
nativescript-videoplayer
<VideoPlayer src="video.mp4"
controls="true"
loop="true"
autoplay="false">
</VideoPlayer>
#OdessaJS - @rowdyrabouw 130/134
2xr.nl/odessajs
#OdessaJS - @rowdyrabouw
Дякую
#OdessaJS - @rowdyrabouw
Links
Native elements playground: http://2xr.nl/markup
keyboardType playground: http://2xr.nl/keyboardType
TabView playground: http://2xr.nl/TabView
Plugin demo app:
https://github.com/rowdyrabouw/NativeScriptTalk/tree/OdessaJS
#OdessaJS - @rowdyrabouw 134/134

More Related Content

What's hot

EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?Andrew Mleczko
 
API workshop: Introduction to APIs (TC Camp)
API workshop: Introduction to APIs (TC Camp)API workshop: Introduction to APIs (TC Camp)
API workshop: Introduction to APIs (TC Camp)Tom Johnson
 
API workshop: Deep dive into Java
API workshop: Deep dive into JavaAPI workshop: Deep dive into Java
API workshop: Deep dive into JavaTom Johnson
 
[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...
[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...
[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...EnlightenmentProject
 
Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS
Cordova / PhoneGap, mobile apps development with HTML5/JS/CSSCordova / PhoneGap, mobile apps development with HTML5/JS/CSS
Cordova / PhoneGap, mobile apps development with HTML5/JS/CSSGabriel Huecas
 
Introduction to Apache Cordova (Phonegap)
Introduction to Apache Cordova (Phonegap)Introduction to Apache Cordova (Phonegap)
Introduction to Apache Cordova (Phonegap)ejlp12
 
Better and Faster: A Journey Toward Clean Code and Enjoyment
Better and Faster: A Journey Toward Clean Code and EnjoymentBetter and Faster: A Journey Toward Clean Code and Enjoyment
Better and Faster: A Journey Toward Clean Code and EnjoymentChris Holland
 
Building Mobile Apps with Cordova , AngularJS and Ionic
Building Mobile Apps with Cordova , AngularJS and IonicBuilding Mobile Apps with Cordova , AngularJS and Ionic
Building Mobile Apps with Cordova , AngularJS and IonicKadhem Soltani
 
Marriage vs live in
Marriage vs live inMarriage vs live in
Marriage vs live inRitu Kamthan
 
Hybrid vs. Native app - Ionic Framework with AngularJS
Hybrid vs. Native app - Ionic Framework with AngularJSHybrid vs. Native app - Ionic Framework with AngularJS
Hybrid vs. Native app - Ionic Framework with AngularJSZvika Epstein
 
Fast Web Applications with Go
Fast Web Applications with Go Fast Web Applications with Go
Fast Web Applications with Go Eylem Ozekin
 
How to write good quality code
How to write good quality codeHow to write good quality code
How to write good quality codeHayden Bleasel
 
Technical Overwiev (Олексій Панченко)
Technical Overwiev (Олексій Панченко)Technical Overwiev (Олексій Панченко)
Technical Overwiev (Олексій Панченко)IT-HR Club_Lviv
 
Cordova + Ionic + MobileFirst
Cordova + Ionic + MobileFirstCordova + Ionic + MobileFirst
Cordova + Ionic + MobileFirstRaymond Camden
 
Wrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web ApplicationsWrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web ApplicationsRyan Roemer
 
Metaprogramming Go
Metaprogramming GoMetaprogramming Go
Metaprogramming GoWeng Wei
 

What's hot (17)

EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
 
API workshop: Introduction to APIs (TC Camp)
API workshop: Introduction to APIs (TC Camp)API workshop: Introduction to APIs (TC Camp)
API workshop: Introduction to APIs (TC Camp)
 
API workshop: Deep dive into Java
API workshop: Deep dive into JavaAPI workshop: Deep dive into Java
API workshop: Deep dive into Java
 
[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...
[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...
[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...
 
Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS
Cordova / PhoneGap, mobile apps development with HTML5/JS/CSSCordova / PhoneGap, mobile apps development with HTML5/JS/CSS
Cordova / PhoneGap, mobile apps development with HTML5/JS/CSS
 
Introduction to Apache Cordova (Phonegap)
Introduction to Apache Cordova (Phonegap)Introduction to Apache Cordova (Phonegap)
Introduction to Apache Cordova (Phonegap)
 
Better and Faster: A Journey Toward Clean Code and Enjoyment
Better and Faster: A Journey Toward Clean Code and EnjoymentBetter and Faster: A Journey Toward Clean Code and Enjoyment
Better and Faster: A Journey Toward Clean Code and Enjoyment
 
Apache Cordova
Apache CordovaApache Cordova
Apache Cordova
 
Building Mobile Apps with Cordova , AngularJS and Ionic
Building Mobile Apps with Cordova , AngularJS and IonicBuilding Mobile Apps with Cordova , AngularJS and Ionic
Building Mobile Apps with Cordova , AngularJS and Ionic
 
Marriage vs live in
Marriage vs live inMarriage vs live in
Marriage vs live in
 
Hybrid vs. Native app - Ionic Framework with AngularJS
Hybrid vs. Native app - Ionic Framework with AngularJSHybrid vs. Native app - Ionic Framework with AngularJS
Hybrid vs. Native app - Ionic Framework with AngularJS
 
Fast Web Applications with Go
Fast Web Applications with Go Fast Web Applications with Go
Fast Web Applications with Go
 
How to write good quality code
How to write good quality codeHow to write good quality code
How to write good quality code
 
Technical Overwiev (Олексій Панченко)
Technical Overwiev (Олексій Панченко)Technical Overwiev (Олексій Панченко)
Technical Overwiev (Олексій Панченко)
 
Cordova + Ionic + MobileFirst
Cordova + Ionic + MobileFirstCordova + Ionic + MobileFirst
Cordova + Ionic + MobileFirst
 
Wrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web ApplicationsWrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web Applications
 
Metaprogramming Go
Metaprogramming GoMetaprogramming Go
Metaprogramming Go
 

Similar to Rowdy Rabouw - Unleash your web skills on native

HTML5 is the Future of Mobile, PhoneGap Takes You There Today
HTML5 is the Future of Mobile, PhoneGap Takes You There TodayHTML5 is the Future of Mobile, PhoneGap Takes You There Today
HTML5 is the Future of Mobile, PhoneGap Takes You There Todaydavyjones
 
Mobile Vue.js – From PWA to Native
Mobile Vue.js – From PWA to NativeMobile Vue.js – From PWA to Native
Mobile Vue.js – From PWA to NativeMartinSotirov
 
Froyo to kit kat two years developing & maintaining deliradio
Froyo to kit kat   two years developing & maintaining deliradioFroyo to kit kat   two years developing & maintaining deliradio
Froyo to kit kat two years developing & maintaining deliradioDroidcon Berlin
 
From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)Bramus Van Damme
 
Angular mobile angular_u
Angular mobile angular_uAngular mobile angular_u
Angular mobile angular_uDoris Chen
 
OWASP SF - Reviewing Modern JavaScript Applications
OWASP SF - Reviewing Modern JavaScript ApplicationsOWASP SF - Reviewing Modern JavaScript Applications
OWASP SF - Reviewing Modern JavaScript ApplicationsLewis Ardern
 
Awesome application in 2014
Awesome application in 2014Awesome application in 2014
Awesome application in 2014Codemotion
 
Introduction phonegap
Introduction phonegapIntroduction phonegap
Introduction phonegapRakesh Jha
 
Advanced programing in phonegap
Advanced programing in phonegapAdvanced programing in phonegap
Advanced programing in phonegapRakesh Jha
 
Quality code in wordpress
Quality code in wordpressQuality code in wordpress
Quality code in wordpressRan Bar-Zik
 
Punta Dreamin 17 Generic Apex and Tooling Api
Punta Dreamin 17 Generic Apex and Tooling ApiPunta Dreamin 17 Generic Apex and Tooling Api
Punta Dreamin 17 Generic Apex and Tooling ApiAdam Olshansky
 
Write Once, Run Everywhere
Write Once, Run EverywhereWrite Once, Run Everywhere
Write Once, Run EverywhereMike North
 
Phonegap facebook- plugin
Phonegap facebook- pluginPhonegap facebook- plugin
Phonegap facebook- pluginSteve Gill
 
Branding SharePoint from Prototype to Deployment - Workshop
Branding SharePoint from Prototype to Deployment - WorkshopBranding SharePoint from Prototype to Deployment - Workshop
Branding SharePoint from Prototype to Deployment - WorkshopEric Overfield
 
really really really awesome php application with bdd behat and iterfaces
really really really awesome php application with bdd behat and iterfacesreally really really awesome php application with bdd behat and iterfaces
really really really awesome php application with bdd behat and iterfacesGiulio De Donato
 
You Got React.js in My PHP
You Got React.js in My PHPYou Got React.js in My PHP
You Got React.js in My PHPTaylor Lovett
 
Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com RubyConsegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com RubyFabio Akita
 

Similar to Rowdy Rabouw - Unleash your web skills on native (20)

HTML5 is the Future of Mobile, PhoneGap Takes You There Today
HTML5 is the Future of Mobile, PhoneGap Takes You There TodayHTML5 is the Future of Mobile, PhoneGap Takes You There Today
HTML5 is the Future of Mobile, PhoneGap Takes You There Today
 
Mobile Vue.js – From PWA to Native
Mobile Vue.js – From PWA to NativeMobile Vue.js – From PWA to Native
Mobile Vue.js – From PWA to Native
 
Froyo to kit kat two years developing & maintaining deliradio
Froyo to kit kat   two years developing & maintaining deliradioFroyo to kit kat   two years developing & maintaining deliradio
Froyo to kit kat two years developing & maintaining deliradio
 
From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)
 
Angular mobile angular_u
Angular mobile angular_uAngular mobile angular_u
Angular mobile angular_u
 
PhoneGap/Cordova
PhoneGap/CordovaPhoneGap/Cordova
PhoneGap/Cordova
 
Apache Cordova 4.x
Apache Cordova 4.xApache Cordova 4.x
Apache Cordova 4.x
 
OWASP SF - Reviewing Modern JavaScript Applications
OWASP SF - Reviewing Modern JavaScript ApplicationsOWASP SF - Reviewing Modern JavaScript Applications
OWASP SF - Reviewing Modern JavaScript Applications
 
Awesome application in 2014
Awesome application in 2014Awesome application in 2014
Awesome application in 2014
 
Introduction phonegap
Introduction phonegapIntroduction phonegap
Introduction phonegap
 
Advanced programing in phonegap
Advanced programing in phonegapAdvanced programing in phonegap
Advanced programing in phonegap
 
Quality code in wordpress
Quality code in wordpressQuality code in wordpress
Quality code in wordpress
 
Cordova 101
Cordova 101Cordova 101
Cordova 101
 
Punta Dreamin 17 Generic Apex and Tooling Api
Punta Dreamin 17 Generic Apex and Tooling ApiPunta Dreamin 17 Generic Apex and Tooling Api
Punta Dreamin 17 Generic Apex and Tooling Api
 
Write Once, Run Everywhere
Write Once, Run EverywhereWrite Once, Run Everywhere
Write Once, Run Everywhere
 
Phonegap facebook- plugin
Phonegap facebook- pluginPhonegap facebook- plugin
Phonegap facebook- plugin
 
Branding SharePoint from Prototype to Deployment - Workshop
Branding SharePoint from Prototype to Deployment - WorkshopBranding SharePoint from Prototype to Deployment - Workshop
Branding SharePoint from Prototype to Deployment - Workshop
 
really really really awesome php application with bdd behat and iterfaces
really really really awesome php application with bdd behat and iterfacesreally really really awesome php application with bdd behat and iterfaces
really really really awesome php application with bdd behat and iterfaces
 
You Got React.js in My PHP
You Got React.js in My PHPYou Got React.js in My PHP
You Got React.js in My PHP
 
Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com RubyConsegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
 

More from OdessaJS Conf

'GraphQL Schema Design' by Borys Mohyla. OdessaJS'2021
'GraphQL Schema Design' by Borys Mohyla. OdessaJS'2021'GraphQL Schema Design' by Borys Mohyla. OdessaJS'2021
'GraphQL Schema Design' by Borys Mohyla. OdessaJS'2021OdessaJS Conf
 
'How i came up with my talk' by Yurii Artiukh. OdessaJS'2021
'How i came up with my talk' by Yurii Artiukh. OdessaJS'2021'How i came up with my talk' by Yurii Artiukh. OdessaJS'2021
'How i came up with my talk' by Yurii Artiukh. OdessaJS'2021OdessaJS Conf
 
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021OdessaJS Conf
 
Олексій Павленко. CONTRACT PROTECTION ON THE FRONTEND SIDE: HOW TO ORGANIZE R...
Олексій Павленко. CONTRACT PROTECTION ON THE FRONTEND SIDE: HOW TO ORGANIZE R...Олексій Павленко. CONTRACT PROTECTION ON THE FRONTEND SIDE: HOW TO ORGANIZE R...
Олексій Павленко. CONTRACT PROTECTION ON THE FRONTEND SIDE: HOW TO ORGANIZE R...OdessaJS Conf
 
Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021
Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021
Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021OdessaJS Conf
 
Олексій Гончар "Використання Electron в розробці корпоративної відео-мессeндж...
Олексій Гончар "Використання Electron в розробці корпоративної відео-мессeндж...Олексій Гончар "Використання Electron в розробці корпоративної відео-мессeндж...
Олексій Гончар "Використання Electron в розробці корпоративної відео-мессeндж...OdessaJS Conf
 
Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...
Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...
Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...OdessaJS Conf
 
Павло Галушко. GOOD CODE MYTHS. OdessaJS'2021
Павло Галушко. GOOD CODE MYTHS. OdessaJS'2021Павло Галушко. GOOD CODE MYTHS. OdessaJS'2021
Павло Галушко. GOOD CODE MYTHS. OdessaJS'2021OdessaJS Conf
 
"NODEJS & GRAPHQL COOKBOOK. LET’S TALK ABOUT MICRO-SERVICES" by Антон Чередні...
"NODEJS & GRAPHQL COOKBOOK. LET’S TALK ABOUT MICRO-SERVICES" by Антон Чередні..."NODEJS & GRAPHQL COOKBOOK. LET’S TALK ABOUT MICRO-SERVICES" by Антон Чередні...
"NODEJS & GRAPHQL COOKBOOK. LET’S TALK ABOUT MICRO-SERVICES" by Антон Чередні...OdessaJS Conf
 
'BUILDING ANGULAR APPS WITH NX' by Anastasia Necheporenko
'BUILDING ANGULAR APPS WITH NX' by Anastasia Necheporenko'BUILDING ANGULAR APPS WITH NX' by Anastasia Necheporenko
'BUILDING ANGULAR APPS WITH NX' by Anastasia NecheporenkoOdessaJS Conf
 
'IS THERE JAVASCRIPT ON SWAGGER PLUGINS?' by Dmytro Gusev
'IS THERE JAVASCRIPT ON SWAGGER PLUGINS?' by  Dmytro Gusev'IS THERE JAVASCRIPT ON SWAGGER PLUGINS?' by  Dmytro Gusev
'IS THERE JAVASCRIPT ON SWAGGER PLUGINS?' by Dmytro GusevOdessaJS Conf
 
'ETHEREUM SMART CONTRACTS ON JS' by Yaroslav Dvorovenko
'ETHEREUM SMART CONTRACTS ON JS' by Yaroslav Dvorovenko'ETHEREUM SMART CONTRACTS ON JS' by Yaroslav Dvorovenko
'ETHEREUM SMART CONTRACTS ON JS' by Yaroslav DvorovenkoOdessaJS Conf
 
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...OdessaJS Conf
 
'MICROFRONTENDS WITH REACT' by Liliia Karpenko
 'MICROFRONTENDS WITH REACT' by Liliia Karpenko 'MICROFRONTENDS WITH REACT' by Liliia Karpenko
'MICROFRONTENDS WITH REACT' by Liliia KarpenkoOdessaJS Conf
 
'Web performance metrics' BY ROMAN SAVITSKYI at OdessaJS'2020
'Web performance metrics' BY ROMAN SAVITSKYI at OdessaJS'2020'Web performance metrics' BY ROMAN SAVITSKYI at OdessaJS'2020
'Web performance metrics' BY ROMAN SAVITSKYI at OdessaJS'2020OdessaJS Conf
 
'STORY OF ANOTHER ANIMATION' by YURII ARTYUKH at OdessaJS'2020
'STORY OF ANOTHER ANIMATION' by  YURII ARTYUKH at OdessaJS'2020'STORY OF ANOTHER ANIMATION' by  YURII ARTYUKH at OdessaJS'2020
'STORY OF ANOTHER ANIMATION' by YURII ARTYUKH at OdessaJS'2020OdessaJS Conf
 
'JavaScript was invented in Odessa' by DMITRIY GUSEV at OdessaJS'2020
'JavaScript was invented in Odessa' by DMITRIY GUSEV at OdessaJS'2020'JavaScript was invented in Odessa' by DMITRIY GUSEV at OdessaJS'2020
'JavaScript was invented in Odessa' by DMITRIY GUSEV at OdessaJS'2020OdessaJS Conf
 
'Why svelte' by BORYS MOHYLA at OdessaJS'2020
'Why svelte' by BORYS MOHYLA at OdessaJS'2020'Why svelte' by BORYS MOHYLA at OdessaJS'2020
'Why svelte' by BORYS MOHYLA at OdessaJS'2020OdessaJS Conf
 
'Effective node.js development' by Viktor Turskyi at OdessaJS'2020
'Effective node.js development' by Viktor Turskyi at OdessaJS'2020'Effective node.js development' by Viktor Turskyi at OdessaJS'2020
'Effective node.js development' by Viktor Turskyi at OdessaJS'2020OdessaJS Conf
 
'Tensorflow.js in real life' by Pavlo Galushko at OdessaJS'2020
'Tensorflow.js in real life' by Pavlo Galushko at OdessaJS'2020'Tensorflow.js in real life' by Pavlo Galushko at OdessaJS'2020
'Tensorflow.js in real life' by Pavlo Galushko at OdessaJS'2020OdessaJS Conf
 

More from OdessaJS Conf (20)

'GraphQL Schema Design' by Borys Mohyla. OdessaJS'2021
'GraphQL Schema Design' by Borys Mohyla. OdessaJS'2021'GraphQL Schema Design' by Borys Mohyla. OdessaJS'2021
'GraphQL Schema Design' by Borys Mohyla. OdessaJS'2021
 
'How i came up with my talk' by Yurii Artiukh. OdessaJS'2021
'How i came up with my talk' by Yurii Artiukh. OdessaJS'2021'How i came up with my talk' by Yurii Artiukh. OdessaJS'2021
'How i came up with my talk' by Yurii Artiukh. OdessaJS'2021
 
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
 
Олексій Павленко. CONTRACT PROTECTION ON THE FRONTEND SIDE: HOW TO ORGANIZE R...
Олексій Павленко. CONTRACT PROTECTION ON THE FRONTEND SIDE: HOW TO ORGANIZE R...Олексій Павленко. CONTRACT PROTECTION ON THE FRONTEND SIDE: HOW TO ORGANIZE R...
Олексій Павленко. CONTRACT PROTECTION ON THE FRONTEND SIDE: HOW TO ORGANIZE R...
 
Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021
Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021
Андрій Троян. Розробка мікросервісів з NestJS. OdessaJS'2021
 
Олексій Гончар "Використання Electron в розробці корпоративної відео-мессeндж...
Олексій Гончар "Використання Electron в розробці корпоративної відео-мессeндж...Олексій Гончар "Використання Electron в розробці корпоративної відео-мессeндж...
Олексій Гончар "Використання Electron в розробці корпоративної відео-мессeндж...
 
Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...
Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...
Максим Климишин "Що такого особливого у пропозиції вартості шаблону Micro Fro...
 
Павло Галушко. GOOD CODE MYTHS. OdessaJS'2021
Павло Галушко. GOOD CODE MYTHS. OdessaJS'2021Павло Галушко. GOOD CODE MYTHS. OdessaJS'2021
Павло Галушко. GOOD CODE MYTHS. OdessaJS'2021
 
"NODEJS & GRAPHQL COOKBOOK. LET’S TALK ABOUT MICRO-SERVICES" by Антон Чередні...
"NODEJS & GRAPHQL COOKBOOK. LET’S TALK ABOUT MICRO-SERVICES" by Антон Чередні..."NODEJS & GRAPHQL COOKBOOK. LET’S TALK ABOUT MICRO-SERVICES" by Антон Чередні...
"NODEJS & GRAPHQL COOKBOOK. LET’S TALK ABOUT MICRO-SERVICES" by Антон Чередні...
 
'BUILDING ANGULAR APPS WITH NX' by Anastasia Necheporenko
'BUILDING ANGULAR APPS WITH NX' by Anastasia Necheporenko'BUILDING ANGULAR APPS WITH NX' by Anastasia Necheporenko
'BUILDING ANGULAR APPS WITH NX' by Anastasia Necheporenko
 
'IS THERE JAVASCRIPT ON SWAGGER PLUGINS?' by Dmytro Gusev
'IS THERE JAVASCRIPT ON SWAGGER PLUGINS?' by  Dmytro Gusev'IS THERE JAVASCRIPT ON SWAGGER PLUGINS?' by  Dmytro Gusev
'IS THERE JAVASCRIPT ON SWAGGER PLUGINS?' by Dmytro Gusev
 
'ETHEREUM SMART CONTRACTS ON JS' by Yaroslav Dvorovenko
'ETHEREUM SMART CONTRACTS ON JS' by Yaroslav Dvorovenko'ETHEREUM SMART CONTRACTS ON JS' by Yaroslav Dvorovenko
'ETHEREUM SMART CONTRACTS ON JS' by Yaroslav Dvorovenko
 
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
 
'MICROFRONTENDS WITH REACT' by Liliia Karpenko
 'MICROFRONTENDS WITH REACT' by Liliia Karpenko 'MICROFRONTENDS WITH REACT' by Liliia Karpenko
'MICROFRONTENDS WITH REACT' by Liliia Karpenko
 
'Web performance metrics' BY ROMAN SAVITSKYI at OdessaJS'2020
'Web performance metrics' BY ROMAN SAVITSKYI at OdessaJS'2020'Web performance metrics' BY ROMAN SAVITSKYI at OdessaJS'2020
'Web performance metrics' BY ROMAN SAVITSKYI at OdessaJS'2020
 
'STORY OF ANOTHER ANIMATION' by YURII ARTYUKH at OdessaJS'2020
'STORY OF ANOTHER ANIMATION' by  YURII ARTYUKH at OdessaJS'2020'STORY OF ANOTHER ANIMATION' by  YURII ARTYUKH at OdessaJS'2020
'STORY OF ANOTHER ANIMATION' by YURII ARTYUKH at OdessaJS'2020
 
'JavaScript was invented in Odessa' by DMITRIY GUSEV at OdessaJS'2020
'JavaScript was invented in Odessa' by DMITRIY GUSEV at OdessaJS'2020'JavaScript was invented in Odessa' by DMITRIY GUSEV at OdessaJS'2020
'JavaScript was invented in Odessa' by DMITRIY GUSEV at OdessaJS'2020
 
'Why svelte' by BORYS MOHYLA at OdessaJS'2020
'Why svelte' by BORYS MOHYLA at OdessaJS'2020'Why svelte' by BORYS MOHYLA at OdessaJS'2020
'Why svelte' by BORYS MOHYLA at OdessaJS'2020
 
'Effective node.js development' by Viktor Turskyi at OdessaJS'2020
'Effective node.js development' by Viktor Turskyi at OdessaJS'2020'Effective node.js development' by Viktor Turskyi at OdessaJS'2020
'Effective node.js development' by Viktor Turskyi at OdessaJS'2020
 
'Tensorflow.js in real life' by Pavlo Galushko at OdessaJS'2020
'Tensorflow.js in real life' by Pavlo Galushko at OdessaJS'2020'Tensorflow.js in real life' by Pavlo Galushko at OdessaJS'2020
'Tensorflow.js in real life' by Pavlo Galushko at OdessaJS'2020
 

Recently uploaded

Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
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)

Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
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
 

Rowdy Rabouw - Unleash your web skills on native