SlideShare a Scribd company logo
The Nativescript PUG
app Challenge
Transformation to single technology
EMEA PUG Challenge, 20-11-2014
Bronco Oostermeyer
Who are we?
Bronco Oostermeyer
OpenEdge since 1996, everything around Progress and more
Progress, UNIT4, WALVIS
Who are we?
Roel Lakenvelt
OpenEdge since 1989, version 5
VCD Software, Ceasar, Progress, Yonder and Flusso
Native iOS, Angular and many other
Who are we?
Flusso
• One of biggest OpenEdge consultancy firms in NL
• Progress technologies,
• Open Source (Java & ServiceMix, etc),
• Web Apps (Angular2, various app platforms)
• OutSystems
Agenda
-What is {N}
-Choices
-Examples from the field
What is NativeScript?
• Framework for building cross-platform native apps
• iOS & Android (Windows coming soon, for a while now)
• 1 code base for both platforms
• No DOM
• JavaScript
• No Objective C, Swift & Java
• No Cross Compiler (like Xamarin)
• Open source
What is NativeScript? {N}
• Maintained by Telerik
• 1.0 released may 2015
• A year in UI development seems a light year nowadays
• Current version 2.3
• Projected 100k+ npm downloads in 2016
• iOS 8+, Android API level 17, android 4.2
• Set of node.js CLI tools for various tasks
Why NativeScript?
• Native apps
• Javascript
• Consolidation of technology stack
• Direct access native API’s(*)
• No waiting for version X.Y for access newest API
• XML style markup, CSS-like styling
• Markup sort of XAML,
• No real CSS because no DOM
Declaring the UI
UI to Code
page.xml
page.js
JavaScript runtime (JavaScriptCore)
Android OS API (iOS API)
Architectural Overview
var time = new android.text.format.Time();
JavaScript runtime
var time = new android.text.format.Time();
Android OS API
JavaScript runtime
var time = new android.text.format.Time();
Android OS API
android
Android OS API
metadata
C++
JavaScript runtime
var time = new android.text.format.Time();
Android OS API
C++
TimeJNI
Proxy
time
Modules / Plugins
• Modules abstract platform specifics:
Modules
• OK, one more
var http = require(“http”);
http.getJSON(“http://echo.jsontest.com/hello/world”).then(
result => { console.log(JSON.stringify(result)); }
);
Modules / Plugins
var firebase = require(“nativescript-plugin-firebase”);
firebase.init ({
persist: false
}).then( …
);
• Modules abstract platform specifics:
What do you need?
• node.js
• npm 3.x on windows (solves path problems)
• TypeScript (recommended)
• Emulator
• IDE (notepad won’t do)
• Maybe a framework (Angular2)
Why TypeScript?
Choices - TypeScript
• JavaScript (ES6) superset, Strongly typed
• Removes rough edges from JS
• Anders Hejlsberg (Turbo Pascal, Delphi, C#...)
• “JavaScript done right” from Microsoft
• Transpiler (emits JS)
• Build with tooling in mind
http://www.typescriptlang.org/
Choices - Visual Studio Code
• Sublime like text editor
• Plugins
• TypeScript, NativeScript
• Debugger (attachable)
• Windows, MacOS & Linux
• Electron based
• Free!
https://code.visualstudio.com/
Choices – development environment
• We chose the CLI tools & emulators
• npm install –g nativescript
• MacOS needed
• Alternative is Telerik Platform
• We did it the Open Source way
• TP gives “companion app” possibilities
Choices - Emulator
• Genymotion (android)
• Seems to be one of the fastest
• Visual Studio emulator Android
• iOS emulator for XCode
Experience
• Demo
• Agenda
• ListView
• Push Notifications
• Floorplan
• Local storage
• IOS 10
Agenda view
ScrollView (days)
ScrollView (timeslots)
ScrollView
(rooms)
ScrollView horizontal
ScrollView vertical
AbsoluteLayout
GridLayout
ListView
Sectioned ListView with sticky headers
• ListView (core)
• RadListView (nativescript-telerik-ui)
• nativescript-sectioned-list-view
• Create own/change existing module
• Fake headers and sections
ListView
Sponsortype
Sponsor
Header
Push Notifications
APNS
GCM
WNS
1. Registration
2.DeviceID
Own server
A. Message
B. Notification
3. DeviceID
General
Push
Notification
Server
UI
Push Notifications
• Homebrewn Apache ServiceMix based solution
• Telerik’s Everlive  no Typescript typings at that time
• Firebase
• Successor to Google Cloud Messaging (GCM)
• nativescript-plugin-firebase from Eddy Verbruggen
• Issues
• firebase.init() before application.start under iOS
• Install Google Play Services on Genymotion
• Push notifications will not work in the iOS emulator
Floorplan
• Pinch
• Pan
• Surprisingly easy
Floorplan
Local storage
• SQLite for text
• nativescript-sqlite
• Images as static files
• knownFolders.currentApp();
• knownFolders.documents();
• Tools
• Android device monitor
• Terminal on macOS
iOS 10
• Released on 13 September
• New Xcode version and new SDK’s
NSFileManager.defaultManager is not a function
• Many class methods changed into class properties
var fileManager = NSFileManager.defaultManager();
var fileManager = NSFileManager.defaultManager;
• Nativescript 2.3 on 20 September (core modules)
• nativescript-telerik-ui on 20 september
• nativescript-plugin-firebase on 21 September
• nativescript-sqlite this week
Conclusions
• Great way to build native(!) apps
• Search for modules
• https://plugins.telerik.com/nativescript
• http://nativescript.rocks/all.php
• Sooner or later iOS or Android knowledge needed
• Open Source: be prepared to invest time
• Read the manuals
• Always test on all (physical) devices
• One more thing, still waiting for Windows support
Questions?
This presentation @
Links
• {N} runtime explained: http://developer.telerik.com/featured/nativescript-works/
follow us on:
Ad

More Related Content

What's hot (20)

Conquering AngularJS Limitations
Conquering AngularJS LimitationsConquering AngularJS Limitations
Conquering AngularJS Limitations
Valeri Karpov
 
JSFoo-2017 Takeaways
JSFoo-2017 TakeawaysJSFoo-2017 Takeaways
JSFoo-2017 Takeaways
Mir Ali
 
QA Fes 2016. Александр Хотемской. Обзор ProtractorJS как фреймворка для брауз...
QA Fes 2016. Александр Хотемской. Обзор ProtractorJS как фреймворка для брауз...QA Fes 2016. Александр Хотемской. Обзор ProtractorJS как фреймворка для брауз...
QA Fes 2016. Александр Хотемской. Обзор ProtractorJS как фреймворка для брауз...
QAFest
 
Next generation frontend tooling
Next generation frontend toolingNext generation frontend tooling
Next generation frontend tooling
pksjce
 
Unit Testing in JavaScript
Unit Testing in JavaScriptUnit Testing in JavaScript
Unit Testing in JavaScript
Rob Scaduto
 
TypeScript Jump Start
TypeScript Jump StartTypeScript Jump Start
TypeScript Jump Start
Mostafa
 
React Native
React NativeReact Native
React Native
Artyom Trityak
 
Kharkiv JS 2015 - Creating isomorphic applications in React (en)
Kharkiv JS  2015 - Creating isomorphic applications in React (en)Kharkiv JS  2015 - Creating isomorphic applications in React (en)
Kharkiv JS 2015 - Creating isomorphic applications in React (en)
Viktor Turskyi
 
Ansible 2.0 - How to use Ansible to automate your applications in AWS.
Ansible 2.0 - How to use Ansible to automate your applications in AWS.Ansible 2.0 - How to use Ansible to automate your applications in AWS.
Ansible 2.0 - How to use Ansible to automate your applications in AWS.
Idan Tohami
 
CloudExpo 2018: Docker - Power Your Move to the Cloud
CloudExpo 2018: Docker - Power Your Move to the CloudCloudExpo 2018: Docker - Power Your Move to the Cloud
CloudExpo 2018: Docker - Power Your Move to the Cloud
Elton Stoneman
 
Isomorphic web application
Isomorphic web applicationIsomorphic web application
Isomorphic web application
Oliver N
 
Docker at Cloud9 IDE
Docker at Cloud9 IDEDocker at Cloud9 IDE
Docker at Cloud9 IDE
lennartkats
 
The Architect Way
The Architect WayThe Architect Way
The Architect Way
Jan Jongboom
 
CI/CD at bol.com
CI/CD at bol.comCI/CD at bol.com
CI/CD at bol.com
Maarten Dirkse
 
Docker (compose) in devops - prague docker meetup
Docker (compose) in devops - prague docker meetupDocker (compose) in devops - prague docker meetup
Docker (compose) in devops - prague docker meetup
Juraj Kojdjak
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript Introduction
Travis van der Font
 
The Saga of JavaScript and TypeScript: Part 1
The Saga of JavaScript and TypeScript: Part 1The Saga of JavaScript and TypeScript: Part 1
The Saga of JavaScript and TypeScript: Part 1
Haci Murat Yaman
 
Java Development EcoSystem
Java Development EcoSystemJava Development EcoSystem
Java Development EcoSystem
Alex Tumanoff
 
Presentation1
Presentation1Presentation1
Presentation1
Kshitiz Rimal
 
Docker multi-stage build
Docker multi-stage buildDocker multi-stage build
Docker multi-stage build
Alexei Ledenev
 
Conquering AngularJS Limitations
Conquering AngularJS LimitationsConquering AngularJS Limitations
Conquering AngularJS Limitations
Valeri Karpov
 
JSFoo-2017 Takeaways
JSFoo-2017 TakeawaysJSFoo-2017 Takeaways
JSFoo-2017 Takeaways
Mir Ali
 
QA Fes 2016. Александр Хотемской. Обзор ProtractorJS как фреймворка для брауз...
QA Fes 2016. Александр Хотемской. Обзор ProtractorJS как фреймворка для брауз...QA Fes 2016. Александр Хотемской. Обзор ProtractorJS как фреймворка для брауз...
QA Fes 2016. Александр Хотемской. Обзор ProtractorJS как фреймворка для брауз...
QAFest
 
Next generation frontend tooling
Next generation frontend toolingNext generation frontend tooling
Next generation frontend tooling
pksjce
 
Unit Testing in JavaScript
Unit Testing in JavaScriptUnit Testing in JavaScript
Unit Testing in JavaScript
Rob Scaduto
 
TypeScript Jump Start
TypeScript Jump StartTypeScript Jump Start
TypeScript Jump Start
Mostafa
 
Kharkiv JS 2015 - Creating isomorphic applications in React (en)
Kharkiv JS  2015 - Creating isomorphic applications in React (en)Kharkiv JS  2015 - Creating isomorphic applications in React (en)
Kharkiv JS 2015 - Creating isomorphic applications in React (en)
Viktor Turskyi
 
Ansible 2.0 - How to use Ansible to automate your applications in AWS.
Ansible 2.0 - How to use Ansible to automate your applications in AWS.Ansible 2.0 - How to use Ansible to automate your applications in AWS.
Ansible 2.0 - How to use Ansible to automate your applications in AWS.
Idan Tohami
 
CloudExpo 2018: Docker - Power Your Move to the Cloud
CloudExpo 2018: Docker - Power Your Move to the CloudCloudExpo 2018: Docker - Power Your Move to the Cloud
CloudExpo 2018: Docker - Power Your Move to the Cloud
Elton Stoneman
 
Isomorphic web application
Isomorphic web applicationIsomorphic web application
Isomorphic web application
Oliver N
 
Docker at Cloud9 IDE
Docker at Cloud9 IDEDocker at Cloud9 IDE
Docker at Cloud9 IDE
lennartkats
 
Docker (compose) in devops - prague docker meetup
Docker (compose) in devops - prague docker meetupDocker (compose) in devops - prague docker meetup
Docker (compose) in devops - prague docker meetup
Juraj Kojdjak
 
The Saga of JavaScript and TypeScript: Part 1
The Saga of JavaScript and TypeScript: Part 1The Saga of JavaScript and TypeScript: Part 1
The Saga of JavaScript and TypeScript: Part 1
Haci Murat Yaman
 
Java Development EcoSystem
Java Development EcoSystemJava Development EcoSystem
Java Development EcoSystem
Alex Tumanoff
 
Docker multi-stage build
Docker multi-stage buildDocker multi-stage build
Docker multi-stage build
Alexei Ledenev
 

Viewers also liked (10)

NativeScript Developer Day Keynote - Todd Anglin & Burke Holland
NativeScript Developer Day Keynote - Todd Anglin & Burke HollandNativeScript Developer Day Keynote - Todd Anglin & Burke Holland
NativeScript Developer Day Keynote - Todd Anglin & Burke Holland
Brian Rinaldi
 
Nativescript
NativescriptNativescript
Nativescript
Software Infrastructure
 
NativeScript + Push Notifications
NativeScript + Push NotificationsNativeScript + Push Notifications
NativeScript + Push Notifications
Lohith Goudagere Nagaraj
 
ng-conf NativeScript and Angular 2 Workshop
ng-conf NativeScript and Angular 2 Workshopng-conf NativeScript and Angular 2 Workshop
ng-conf NativeScript and Angular 2 Workshop
tjvantoll
 
Flusso Continuous Integration & Continuous Delivery
Flusso Continuous Integration & Continuous DeliveryFlusso Continuous Integration & Continuous Delivery
Flusso Continuous Integration & Continuous Delivery
Joost van der Griendt
 
Introduction to NativeScript - BuildTruly Native Apps using JavaScript
Introduction to NativeScript - BuildTruly Native Apps using JavaScriptIntroduction to NativeScript - BuildTruly Native Apps using JavaScript
Introduction to NativeScript - BuildTruly Native Apps using JavaScript
Lohith Goudagere Nagaraj
 
NativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
NativeScript: Cross-Platform Mobile Apps with JavaScript and AngularNativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
NativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
Todd Anglin
 
CI and CD with Jenkins
CI and CD with JenkinsCI and CD with Jenkins
CI and CD with Jenkins
Martin Málek
 
Nativescript with angular 2
Nativescript with angular 2Nativescript with angular 2
Nativescript with angular 2
Christoffer Noring
 
NativeScript - Open source framework for building truly native mobile apps wi...
NativeScript - Open source framework for building truly native mobile apps wi...NativeScript - Open source framework for building truly native mobile apps wi...
NativeScript - Open source framework for building truly native mobile apps wi...
Dan Wilson
 
NativeScript Developer Day Keynote - Todd Anglin & Burke Holland
NativeScript Developer Day Keynote - Todd Anglin & Burke HollandNativeScript Developer Day Keynote - Todd Anglin & Burke Holland
NativeScript Developer Day Keynote - Todd Anglin & Burke Holland
Brian Rinaldi
 
ng-conf NativeScript and Angular 2 Workshop
ng-conf NativeScript and Angular 2 Workshopng-conf NativeScript and Angular 2 Workshop
ng-conf NativeScript and Angular 2 Workshop
tjvantoll
 
Flusso Continuous Integration & Continuous Delivery
Flusso Continuous Integration & Continuous DeliveryFlusso Continuous Integration & Continuous Delivery
Flusso Continuous Integration & Continuous Delivery
Joost van der Griendt
 
Introduction to NativeScript - BuildTruly Native Apps using JavaScript
Introduction to NativeScript - BuildTruly Native Apps using JavaScriptIntroduction to NativeScript - BuildTruly Native Apps using JavaScript
Introduction to NativeScript - BuildTruly Native Apps using JavaScript
Lohith Goudagere Nagaraj
 
NativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
NativeScript: Cross-Platform Mobile Apps with JavaScript and AngularNativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
NativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
Todd Anglin
 
CI and CD with Jenkins
CI and CD with JenkinsCI and CD with Jenkins
CI and CD with Jenkins
Martin Málek
 
NativeScript - Open source framework for building truly native mobile apps wi...
NativeScript - Open source framework for building truly native mobile apps wi...NativeScript - Open source framework for building truly native mobile apps wi...
NativeScript - Open source framework for building truly native mobile apps wi...
Dan Wilson
 
Ad

Similar to PUG Challenge 2016 - The nativescript pug app challenge (20)

Cross-Platform Development
Cross-Platform DevelopmentCross-Platform Development
Cross-Platform Development
Syed Owais Ali Chishti
 
Android Tutorial
Android TutorialAndroid Tutorial
Android Tutorial
Yogesh_Lakhole
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
Aaron Rosenberg
 
[2015/2016] Apache Cordova
[2015/2016] Apache Cordova[2015/2016] Apache Cordova
[2015/2016] Apache Cordova
Ivano Malavolta
 
Developing a mobile cross-platform library
Developing a mobile cross-platform libraryDeveloping a mobile cross-platform library
Developing a mobile cross-platform library
Kostis Dadamis
 
.NET7.pptx
.NET7.pptx.NET7.pptx
.NET7.pptx
Udaiappa Ramachandran
 
OSGi on Google Android using Apache Felix
OSGi on Google Android using Apache FelixOSGi on Google Android using Apache Felix
OSGi on Google Android using Apache Felix
Marcel Offermans
 
Developing a native mobile apps using Ionic&Cordova
Developing a native mobile apps using Ionic&CordovaDeveloping a native mobile apps using Ionic&Cordova
Developing a native mobile apps using Ionic&Cordova
Damir Beylkhanov
 
Android dev o_auth
Android dev o_authAndroid dev o_auth
Android dev o_auth
lzongren
 
.NET? MonoDroid Does
.NET? MonoDroid Does.NET? MonoDroid Does
.NET? MonoDroid Does
Kevin McMahon
 
SynapseIndia java and .net development
SynapseIndia java and .net developmentSynapseIndia java and .net development
SynapseIndia java and .net development
Synapseindiappsdevelopment
 
NCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile AppsNCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile Apps
John M. Wargo
 
React native - React(ive) Way To Build Native Mobile Apps
React native - React(ive) Way To Build Native Mobile AppsReact native - React(ive) Way To Build Native Mobile Apps
React native - React(ive) Way To Build Native Mobile Apps
Jimit Shah
 
Escaping the yellow bubble - rewriting Domino using MongoDb and Angular
Escaping the yellow bubble - rewriting Domino using MongoDb and AngularEscaping the yellow bubble - rewriting Domino using MongoDb and Angular
Escaping the yellow bubble - rewriting Domino using MongoDb and Angular
Mark Leusink
 
Going Offline with JS
Going Offline with JSGoing Offline with JS
Going Offline with JS
brendankowitz
 
Radu vunvulea building and testing windows 8 metro style applications using ...
Radu vunvulea  building and testing windows 8 metro style applications using ...Radu vunvulea  building and testing windows 8 metro style applications using ...
Radu vunvulea building and testing windows 8 metro style applications using ...
Radu Vunvulea
 
What we do with Go
What we do with GoWhat we do with Go
What we do with Go
MarcelLanz
 
Hyperloop
HyperloopHyperloop
Hyperloop
Conny Svensson
 
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Ryan Cuprak
 
Introduction to node.js by jiban
Introduction to node.js by jibanIntroduction to node.js by jiban
Introduction to node.js by jiban
Jibanananda Sana
 
[2015/2016] Apache Cordova
[2015/2016] Apache Cordova[2015/2016] Apache Cordova
[2015/2016] Apache Cordova
Ivano Malavolta
 
Developing a mobile cross-platform library
Developing a mobile cross-platform libraryDeveloping a mobile cross-platform library
Developing a mobile cross-platform library
Kostis Dadamis
 
OSGi on Google Android using Apache Felix
OSGi on Google Android using Apache FelixOSGi on Google Android using Apache Felix
OSGi on Google Android using Apache Felix
Marcel Offermans
 
Developing a native mobile apps using Ionic&Cordova
Developing a native mobile apps using Ionic&CordovaDeveloping a native mobile apps using Ionic&Cordova
Developing a native mobile apps using Ionic&Cordova
Damir Beylkhanov
 
Android dev o_auth
Android dev o_authAndroid dev o_auth
Android dev o_auth
lzongren
 
.NET? MonoDroid Does
.NET? MonoDroid Does.NET? MonoDroid Does
.NET? MonoDroid Does
Kevin McMahon
 
NCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile AppsNCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile Apps
John M. Wargo
 
React native - React(ive) Way To Build Native Mobile Apps
React native - React(ive) Way To Build Native Mobile AppsReact native - React(ive) Way To Build Native Mobile Apps
React native - React(ive) Way To Build Native Mobile Apps
Jimit Shah
 
Escaping the yellow bubble - rewriting Domino using MongoDb and Angular
Escaping the yellow bubble - rewriting Domino using MongoDb and AngularEscaping the yellow bubble - rewriting Domino using MongoDb and Angular
Escaping the yellow bubble - rewriting Domino using MongoDb and Angular
Mark Leusink
 
Going Offline with JS
Going Offline with JSGoing Offline with JS
Going Offline with JS
brendankowitz
 
Radu vunvulea building and testing windows 8 metro style applications using ...
Radu vunvulea  building and testing windows 8 metro style applications using ...Radu vunvulea  building and testing windows 8 metro style applications using ...
Radu vunvulea building and testing windows 8 metro style applications using ...
Radu Vunvulea
 
What we do with Go
What we do with GoWhat we do with Go
What we do with Go
MarcelLanz
 
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Hybrid Mobile Development with Apache Cordova and Java EE 7 (JavaOne 2014)
Ryan Cuprak
 
Introduction to node.js by jiban
Introduction to node.js by jibanIntroduction to node.js by jiban
Introduction to node.js by jiban
Jibanananda Sana
 
Ad

Recently uploaded (20)

Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
Top 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docxTop 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docx
Portli
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage DashboardsAdobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
BradBedford3
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentSecure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Shubham Joshi
 
Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
Revolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptxRevolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptx
nidhisingh691197
 
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AIScaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
danshalev
 
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
F-Secure Freedome VPN 2025 Crack Plus Activation  New VersionF-Secure Freedome VPN 2025 Crack Plus Activation  New Version
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
saimabibi60507
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
Maxon CINEMA 4D 2025 Crack FREE Download LINK
Maxon CINEMA 4D 2025 Crack FREE Download LINKMaxon CINEMA 4D 2025 Crack FREE Download LINK
Maxon CINEMA 4D 2025 Crack FREE Download LINK
younisnoman75
 
How can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptxHow can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptx
laravinson24
 
Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]
saniaaftab72555
 
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
ssuserb14185
 
The Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdfThe Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdf
drewplanas10
 
FL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full VersionFL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full Version
tahirabibi60507
 
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
Andre Hora
 
Automation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath CertificateAutomation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath Certificate
VICTOR MAESTRE RAMIREZ
 
Download YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full ActivatedDownload YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full Activated
saniamalik72555
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
Top 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docxTop 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docx
Portli
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage DashboardsAdobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
BradBedford3
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentSecure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Shubham Joshi
 
Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
Revolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptxRevolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptx
nidhisingh691197
 
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AIScaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
danshalev
 
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
F-Secure Freedome VPN 2025 Crack Plus Activation  New VersionF-Secure Freedome VPN 2025 Crack Plus Activation  New Version
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
saimabibi60507
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
Maxon CINEMA 4D 2025 Crack FREE Download LINK
Maxon CINEMA 4D 2025 Crack FREE Download LINKMaxon CINEMA 4D 2025 Crack FREE Download LINK
Maxon CINEMA 4D 2025 Crack FREE Download LINK
younisnoman75
 
How can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptxHow can one start with crypto wallet development.pptx
How can one start with crypto wallet development.pptx
laravinson24
 
Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]
saniaaftab72555
 
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
ssuserb14185
 
The Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdfThe Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdf
drewplanas10
 
FL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full VersionFL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full Version
tahirabibi60507
 
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
Andre Hora
 
Automation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath CertificateAutomation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath Certificate
VICTOR MAESTRE RAMIREZ
 
Download YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full ActivatedDownload YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full Activated
saniamalik72555
 

PUG Challenge 2016 - The nativescript pug app challenge

  • 1. The Nativescript PUG app Challenge Transformation to single technology EMEA PUG Challenge, 20-11-2014 Bronco Oostermeyer
  • 2. Who are we? Bronco Oostermeyer OpenEdge since 1996, everything around Progress and more Progress, UNIT4, WALVIS
  • 3. Who are we? Roel Lakenvelt OpenEdge since 1989, version 5 VCD Software, Ceasar, Progress, Yonder and Flusso Native iOS, Angular and many other
  • 4. Who are we? Flusso • One of biggest OpenEdge consultancy firms in NL • Progress technologies, • Open Source (Java & ServiceMix, etc), • Web Apps (Angular2, various app platforms) • OutSystems
  • 6. What is NativeScript? • Framework for building cross-platform native apps • iOS & Android (Windows coming soon, for a while now) • 1 code base for both platforms • No DOM • JavaScript • No Objective C, Swift & Java • No Cross Compiler (like Xamarin) • Open source
  • 7. What is NativeScript? {N} • Maintained by Telerik • 1.0 released may 2015 • A year in UI development seems a light year nowadays • Current version 2.3 • Projected 100k+ npm downloads in 2016 • iOS 8+, Android API level 17, android 4.2 • Set of node.js CLI tools for various tasks
  • 8. Why NativeScript? • Native apps • Javascript • Consolidation of technology stack • Direct access native API’s(*) • No waiting for version X.Y for access newest API • XML style markup, CSS-like styling • Markup sort of XAML, • No real CSS because no DOM
  • 11. JavaScript runtime (JavaScriptCore) Android OS API (iOS API) Architectural Overview var time = new android.text.format.Time();
  • 12. JavaScript runtime var time = new android.text.format.Time(); Android OS API
  • 13. JavaScript runtime var time = new android.text.format.Time(); Android OS API android Android OS API metadata C++
  • 14. JavaScript runtime var time = new android.text.format.Time(); Android OS API C++ TimeJNI Proxy time
  • 15. Modules / Plugins • Modules abstract platform specifics:
  • 16. Modules • OK, one more var http = require(“http”); http.getJSON(“http://echo.jsontest.com/hello/world”).then( result => { console.log(JSON.stringify(result)); } );
  • 17. Modules / Plugins var firebase = require(“nativescript-plugin-firebase”); firebase.init ({ persist: false }).then( … ); • Modules abstract platform specifics:
  • 18. What do you need? • node.js • npm 3.x on windows (solves path problems) • TypeScript (recommended) • Emulator • IDE (notepad won’t do) • Maybe a framework (Angular2)
  • 20. Choices - TypeScript • JavaScript (ES6) superset, Strongly typed • Removes rough edges from JS • Anders Hejlsberg (Turbo Pascal, Delphi, C#...) • “JavaScript done right” from Microsoft • Transpiler (emits JS) • Build with tooling in mind http://www.typescriptlang.org/
  • 21. Choices - Visual Studio Code • Sublime like text editor • Plugins • TypeScript, NativeScript • Debugger (attachable) • Windows, MacOS & Linux • Electron based • Free! https://code.visualstudio.com/
  • 22. Choices – development environment • We chose the CLI tools & emulators • npm install –g nativescript • MacOS needed • Alternative is Telerik Platform • We did it the Open Source way • TP gives “companion app” possibilities
  • 23. Choices - Emulator • Genymotion (android) • Seems to be one of the fastest • Visual Studio emulator Android • iOS emulator for XCode
  • 24. Experience • Demo • Agenda • ListView • Push Notifications • Floorplan • Local storage • IOS 10
  • 25. Agenda view ScrollView (days) ScrollView (timeslots) ScrollView (rooms) ScrollView horizontal ScrollView vertical AbsoluteLayout GridLayout
  • 26. ListView Sectioned ListView with sticky headers • ListView (core) • RadListView (nativescript-telerik-ui) • nativescript-sectioned-list-view • Create own/change existing module • Fake headers and sections
  • 28. Push Notifications APNS GCM WNS 1. Registration 2.DeviceID Own server A. Message B. Notification 3. DeviceID General Push Notification Server UI
  • 29. Push Notifications • Homebrewn Apache ServiceMix based solution • Telerik’s Everlive  no Typescript typings at that time • Firebase • Successor to Google Cloud Messaging (GCM) • nativescript-plugin-firebase from Eddy Verbruggen • Issues • firebase.init() before application.start under iOS • Install Google Play Services on Genymotion • Push notifications will not work in the iOS emulator
  • 30. Floorplan • Pinch • Pan • Surprisingly easy
  • 32. Local storage • SQLite for text • nativescript-sqlite • Images as static files • knownFolders.currentApp(); • knownFolders.documents(); • Tools • Android device monitor • Terminal on macOS
  • 33. iOS 10 • Released on 13 September • New Xcode version and new SDK’s NSFileManager.defaultManager is not a function • Many class methods changed into class properties var fileManager = NSFileManager.defaultManager(); var fileManager = NSFileManager.defaultManager; • Nativescript 2.3 on 20 September (core modules) • nativescript-telerik-ui on 20 september • nativescript-plugin-firebase on 21 September • nativescript-sqlite this week
  • 34. Conclusions • Great way to build native(!) apps • Search for modules • https://plugins.telerik.com/nativescript • http://nativescript.rocks/all.php • Sooner or later iOS or Android knowledge needed • Open Source: be prepared to invest time • Read the manuals • Always test on all (physical) devices • One more thing, still waiting for Windows support
  • 37. Links • {N} runtime explained: http://developer.telerik.com/featured/nativescript-works/