SlideShare a Scribd company logo
http://beyondtheeveryday.com
Everyone pull it up on their phone
BTE 102: The Future of Web
Development Write Once, Run
Everywhere with AngularJS and
Domino
Marky Roden Mark Leusink
Senior Solutions Architect LinQed
PSC Group LLC
About Mark
 Freelance consultant/ developer
– XPages, web, mobile, Unplugged
 15 years experience (that makes me younger than Marky)
 Fan of everything web dev (Angular, Bootstrap, web components)
 Open source (OpenNTF, GitHub)
– XPages Debug Toolbar, Bootstrap4XPages, Bootcards
 Blog: http://linqed.eu
 Twitter: @markleusink
 Email: m.leusink@linqed.eu
About Marky
 Over 17 years IBM Notes Domino® work
 Senior Solutions Architect at PSC Group
• XPages Developer
• Project Leader
• AngularJS Protagonist
 Contact Information
• Blog: http://www.xomino.com
• Twitter: @markyroden
• Skype: marky.roden
www.psclistens.com @pscgroup
Š 2013 IBM Corporation
F O U N D E D I N 1 9 9 0
The Largest, Most Experienced
XPages
Service Firm in North America
PSC Group, LLC
Congratulates our
5 IBM Champions!
Brad Balassaitis Andrew Barickman Kathy Brown John Head Mark Roden
Agenda
• Introduction to MVC/ REST architectures
– True Separation of UI and Business Logic
• Introduction to AngularJS
– Why Angular?
– Components and capabilities
– Examples of capabilities
• Domino as a REST Service
• Demo app
– Application Architecture
– How to run the same app “everywhere”
http://beyondtheeveryday.com
Everyone pull it up on their phone
About the demo app
The Demo app is built with
– AngularJS
– Bootstrap
– IBM Domino data
– Zero XPages
And to make it better
– A Bootstrap theme from Bootswatch.com (‘United’)
– Font Awesome for icons
– Animate.css for animations
– FastClick.js for a snappier UI
– angular-local-storage for local storage
Sessions data from the Totally Unofficial Totally Unsupported session database
INTRODUCTION TO MVC / REST
ARCHITECTURE
Introduction to MVC / REST Architecture
• MVC (Model-View-Controller) is an architectural design pattern that encourages
improved application organization through a separation of concerns.
– The Model manages the data
– The View is the HTML representation of the data through the use of Templates
• What your users see
– The Controller is the application code which is used to determine the way the Model is
populated and displayed.
• Glues the Model and View together
• Angular provides the framework to do client-side MVC
Introduction to MVC / REST Architecture
• Representational state transfer (REST) is an architecture style for designing
networked applications
– Uses simple HTTP calls
– JSON
• Performant
• Scalable
• Simple interface
• Portable
ServerClient
Introduction to MVC / REST Architecture
• We’ve been building web apps like this
Request page
- process request
- get data
- create HTML
Response
• HTML
• CSS
• JavaScript
(display)
Client
Introduction to MVC / REST Architecture
• But this is getting popular
Webserver
Request page/ app
Response
(static HTML, JS,
CSS)
(process)
REST
API
Data (JSON)
Request data
Client
Introduction to MVC / REST Architecture
• Or this variation
Webserver
Response
(static HTML, JS,
CSS)
(process)
REST
API
Data (JSON)
Request data
Request page/ app
INTRODUCTION TO ANGULAR.JS
 AngularJS is a structural framework for dynamic web apps. It lets you use HTML as your
template language and lets you extend HTML's syntax to express your application's
components clearly and succinctly. Angular's data binding and dependency injection
eliminate much of the code you currently have to write.
“Angular is what HTML would have been had it been designed for applications”
The AngularJS team
What is AngularJS
• Web application framework
– Designed as a boilerplate model for an application
– Out of the box capabilities and best practices
– Built with test driven development (TDD) in mind
• Runs in the browser, all client side JavaScript
– Unlike e.g. XPages or C# (SharePoint) where most processing is done server side.
• Helps to create dynamic sites / Single Page Applications
– Partials? Dynamic? Been there, done that!
Why AngularJS ?
• Large developer community
– ~75,000 questions tagged on Stackoverflow.com
• Backed by
– Developed by Google and the community
– Open source (MIT license)
• Stable, mature and performant
– Initial release 2009
– Version 1 released Jun 2012
– Current version 1.3.5 (Dec 2014)
– Version 2 scheduled for end of 2015
Why AngularJS?
• Ready for the web of tomorrow
• Many Concepts adopted by Web Components standard
• Data driven
• Custom elements (functional custom attributes)
• HTML Imports
• DOM Templating
AngularJS: Modules
• Ties the code to the HTML DOM model
Angular Route Control
• UI-Router, state based management
• Configures the app
• When a route is encountered
– Use this template
– Use this Page Title
– Use this controller
• http://beyondtheeveryday.com/#/sessionsAll
• http://beyondtheeveryday.com/#/favorites
AngularJS: Controllers
• Contains the application logic.
app.controller("MainCtrl", function($rootScope, $scope, utils,
localStorageService, SessionsFactory) {
$scope.menuDays = [
{id: '0', label:'Sunday'},
{id: '1', label:'Monday'},
{id: '2', label:'Tuesday'},
{id: '3', label:'Wednesday'}
];
//set default active menu option
$scope.pageTitle = "Connect 2015 Sessions";
$scope.activeMenu = "about";
• Lazily instantiated, only when they are needed
– “Angular services are substitutable objects that are wired together using dependency injection (DI). You
can use services to organize and share code across your app”
var app = angular.module("sessionsApp.services", []);
app.factory('SessionsFactory', function($http) {
return {
all : function() {
return $http.get(‘db.nsf/collections/name/sessions')
.then(
function(res) {
return res.data;
});
},
...
AngularJS: Factories and Services
AngularJS: Directives
• Tells Angular that it needs to ‘do’ something
• Interact with the browser based on the controller’s instructions
• Re-usable components
• Much of Angular’s core functionality Directive based
<div class="row" ng-repeat="speaker in session.speakers">
<div class="col-xs-12 col-sm-12">
{{speaker}}
</div>
</div>
AngularJS in depth
• Dependency injections
A software design pattern that deals with how components get hold of their dependencies.
The Angular injector subsystem is in charge of creating components, resolving their dependencies,
and providing them to other components as requested.
AngularJS in depth
• How does it all hang together?
AngularJS in depth
• AngularJS core examples
– ‘$scope’
sessionsAppCtrl.controller('FeedbackCtrl', function($scope, SessionsFactory) {
$scope.submitted = false;
$scope.submit = function() {
SessionsFactory.saveFeedback( {feedback : $scope.feedback, name: $scope.name} );
$scope.submitted = true;
};
});
AngularJS in depth
• AngularJS core services example
– '$http'
app.factory('SessionsFactory', function($http, $q, dasBaseUrl, utils) {
return {
all : function() {
return $http.get('collections/name/sessionsAll?count=1000', {cache: true})
.then( function(res) {
return res.data;
});
},
...
AngularJS in depth
• AngularJS core directives examples
– ng-show / ng-hide
– ng-click
– ng-list, ng-class, ng-repeat, ng-keydown etc
};
<div class="col-sm-8">
<button class="btn btn-default" ng-click="home()">Back</button>
<button class="btn" ng-click="savePerson($event)" ng-hide="create">Save</button>
<button class="btn" ng-click="createPerson($event)" ng-show="create">Create</button>
</div>
AngularJS in depth
• AngularJS template example
AngularJS in depth
• How does AngularJS integrate with XPages ?
• An application written using AngularJS uses 4 main things
– HTML Pages
– JavaScript files
– CSS
– A Data Service
• One or many of those can be “XPages”
DOMINO AS A REST SERVICE
Domino as REST service
• Three options to use Domino as a data store for an Angular application:
– Domino Access Services
• Built-in, easiest to enable
– REST service component from the Extension Library
• More customization options
– Do-it-yourself REST service
• Fully customizable, requires more work
Domino as REST service - Domino Access Services (DAS)
• Consists of 3 services: core, data and
calendar
– For the demo app we’ve only used the
data service
• Must be enabled on server level, app
level and form/ view level
• Gives you the data from all fields
(documents) or columns (views)
Domino as REST service - Domino Access Services (DAS)
http://beyondtheeveryday.com/beyond/connect2015.nsf/api/data/collections/name/sessionsAll
Server Database path DAS View name
Domino as REST service - ExtLib REST
• Drag on an XPage
• Link to data source (view, bean, …)
• Set path
• Done
<xe:restService pathInfo="contactjson">
<xe:this.service>
<xe:viewJsonService viewName="AllContacts" var="entry"
contentType="text/plain" count="10" defaultColumns="true">
</xe:viewJsonService>
</xe:this.service>
</xe:restService>
Domino as REST service - custom REST service
public class MyRESTService {
public static String doGet(HttpServletRequest request, HttpServletResponse response)
{
JsonJavaObject json = new JsonJavaObject();
json.put("userName", ExtLibUtil.getCurrentSession().getEffectiveUserName() );
return JsonGenerator.toJson(JsonJavaFactory.instanceEx, json);
}
}
<!--?xml version="1.0" encoding="UTF-8"?-->
<![CDATA[#{javascript:
var externalContext = facesContext.getExternalContext();
var writer = facesContext.getResponseWriter();
writer.write(
eu.linqed.MyRESTService.doGet(
externalContext.getRequest(),externalContext.getResponse()
));
writer.endDocument();
}
}]]>
Domino as REST service
• More on this: “REST Services and IBM Domino/XWork” by John Dalsgaard
– http://www.slideshare.net/JohnDalsgaard/dannotes-19-20-november-2014
AngularJS in XPages
• How does AngularJS work?
Model View Controller
DEMONSTRATION
Demo app
• Demonstration you just saw was hosted on….
– IBM Domino ®
– IBM Bluemix ®
– Microsoft SharePoint ®
– IBM MobileFirst Platform Foundation ® (previously: IBM Worklight)
– IBM Connections
• Open source
– http://github.com/markleusink/BeyondSessionsApp
CONCLUSION
Conclusion
• AngularJS: MVC front end client side framework
• Add structure to your code
• Enables hybrid mobile web apps
– PhoneGap, Cordova, Worklight
• Use Domino as a NoSQL app server
– Out-of-the-Box, Proven, Stable, Rock solid security
Conclusion
• Modernize Domino Applications smartly
• Running Domino apps within other server platforms
• Make your application code portable
Questions ?
@markyroden
http://xomino.com
@markleusink
http://linqed.eu
Engage Online
 SocialBiz User Group socialbizug.org
– Join the epicenter of Notes and Collaboration user groups
 Social Business Insights blog ibm.com/blogs/socialbusiness
– Read and engage with our bloggers
 Follow us on Twitter
– @IBMConnect and @IBMSocialBiz
 LinkedIn http://bit.ly/SBComm
– Participate in the IBM Social Business group on LinkedIn
 Facebook https://www.facebook.com/IBMConnected
– Like IBM Social Business on Facebook
Notices and Disclaimers
Copyright Š 2015 by International Business Machines Corporation (IBM). No part of this document may be reproduced or transmitted in any form without written permission from IBM.
U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM.
Information in these presentations (including information relating to products that have not yet been announced by IBM) has been reviewed for accuracy as of the date of initial publication and could include
unintentional technical or typographical errors. IBM shall have no responsibility to update this information. THIS DOCUMENT IS DISTRIBUTED "AS IS" WITHOUT ANY WARRANTY, EITHER EXPRESS OR
IMPLIED. IN NO EVENT SHALL IBM BE LIABLE FOR ANY DAMAGE ARISING FROM THE USE OF THIS INFORMATION, INCLUDING BUT NOT LIMITED TO, LOSS OF DATA, BUSINESS INTERRUPTION,
LOSS OF PROFIT OR LOSS OF OPPORTUNITY. IBM products and services are warranted according to the terms and conditions of the agreements under which they are provided.
Any statements regarding IBM's future direction, intent or product plans are subject to change or withdrawal without notice.
Performance data contained herein was generally obtained in a controlled, isolated environments. Customer examples are presented as illustrations of how those customers have used IBM products and the results
they may have achieved. Actual performance, cost, savings or other results in other operating environments may vary.
References in this document to IBM products, programs, or services does not imply that IBM intends to make such products, programs or services available in all countries in which IBM operates or does business.
Workshops, sessions and associated materials may have been prepared by independent session speakers, and do not necessarily reflect the views of IBM. All materials and discussions are provided for
informational purposes only, and are neither intended to, nor shall constitute legal or other guidance or advice to any individual participant or their specific situation.
It is the customer’s responsibility to insure its own compliance with legal requirements and to obtain advice of competent legal counsel as to the identification and interpretation of any relevant laws and regulatory
requirements that may affect the customer’s business and any actions the customer may need to take to comply with such laws. IBM does not provide legal advice or represent or warrant that its services or
products will ensure that the customer is in compliance with any law.
Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products in connection
with this publication and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the
suppliers of those products. IBM does not warrant the quality of any third-party products, or the ability of any such third-party products to interoperate with IBM’s products. IBM EXPRESSLY DISCLAIMS ALL
WARRANTIES, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
The provision of the information contained herein is not intended to, and does not, grant any right or license under any IBM patents, copyrights, trademarks or other intellectual property right.
IBM, the IBM logo, ibm.com, BrassRing®, Connections™, Domino®, Global Business Services®, Global Technology Services®, SmartCloud®, Social Business®, Kenexa®, Notes®, PartnerWorld®, Prove It!®,
PureSystems®, Sametime®, Verse™, Watson™, WebSphere®, Worklight®, are trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service
names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at "Copyright and trademark information" at: www.ibm.com/legal/copytrade.shtml.

More Related Content

What's hot

The fundamental problems of GUI applications and why people choose React
The fundamental problems of GUI applications and why people choose ReactThe fundamental problems of GUI applications and why people choose React
The fundamental problems of GUI applications and why people choose React
Oliver N
 
Isomorphic web application
Isomorphic web applicationIsomorphic web application
Isomorphic web application
Oliver N
 
IBM Digital Experience Theme Customization
IBM Digital Experience Theme CustomizationIBM Digital Experience Theme Customization
IBM Digital Experience Theme Customization
Van Staub, MBA
 
GeneralMobile Hybrid Development with WordPress
GeneralMobile Hybrid Development with WordPressGeneralMobile Hybrid Development with WordPress
GeneralMobile Hybrid Development with WordPressGGDBologna
 
Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!
Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!
Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!
Serdar Basegmez
 
Single Page Applications on JavaScript and ASP.NET MVC4
Single Page Applications on JavaScript and ASP.NET MVC4Single Page Applications on JavaScript and ASP.NET MVC4
Single Page Applications on JavaScript and ASP.NET MVC4
Yuriy Shapovalov
 
Office script labs
Office script labsOffice script labs
Office script labs
Mark Roden
 
Learning ASP.NET 5 and MVC 6
Learning ASP.NET 5 and MVC 6Learning ASP.NET 5 and MVC 6
Learning ASP.NET 5 and MVC 6
Ido Flatow
 
TypeScript and SharePoint Framework
TypeScript and SharePoint FrameworkTypeScript and SharePoint Framework
TypeScript and SharePoint Framework
Bob German
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
hchen1
 
The web - What it has, what it lacks and where it must go - Istanbul
The web - What it has, what it lacks and where it must go - IstanbulThe web - What it has, what it lacks and where it must go - Istanbul
The web - What it has, what it lacks and where it must go - Istanbul
Robert Nyman
 
Angular on ASP.NET MVC 6
Angular on ASP.NET MVC 6Angular on ASP.NET MVC 6
Angular on ASP.NET MVC 6
Noam Kfir
 
DEV-1430 IBM Connections Integration
DEV-1430 IBM Connections IntegrationDEV-1430 IBM Connections Integration
DEV-1430 IBM Connections Integration
Jesse Gallagher
 
Joomla! multiplied - How to run Multi-Sites - JandBeyond 2014
Joomla! multiplied - How to run Multi-Sites - JandBeyond 2014Joomla! multiplied - How to run Multi-Sites - JandBeyond 2014
Joomla! multiplied - How to run Multi-Sites - JandBeyond 2014
Viktor Vogel
 
Bring Order to the Chaos: Take the MVC Plunge
Bring Order to the Chaos: Take the MVC PlungeBring Order to the Chaos: Take the MVC Plunge
Bring Order to the Chaos: Take the MVC Plunge
ColdFusionConference
 
Engage 2019: Modernising Your Domino and XPages Applications
Engage 2019: Modernising Your Domino and XPages Applications Engage 2019: Modernising Your Domino and XPages Applications
Engage 2019: Modernising Your Domino and XPages Applications
Paul Withers
 
OpenNTF Domino API (ODA): Super-Charging Domino Development
OpenNTF Domino API (ODA): Super-Charging Domino DevelopmentOpenNTF Domino API (ODA): Super-Charging Domino Development
OpenNTF Domino API (ODA): Super-Charging Domino Development
Paul Withers
 
Application Lifecycle Management for Office 365 development
Application Lifecycle Management for Office 365 developmentApplication Lifecycle Management for Office 365 development
Application Lifecycle Management for Office 365 development
Chris O'Brien
 
AD503: XPages Mobile Development in IBM Domino 9.0.1 and Beyond
AD503: XPages Mobile Development in IBM Domino 9.0.1 and BeyondAD503: XPages Mobile Development in IBM Domino 9.0.1 and Beyond
AD503: XPages Mobile Development in IBM Domino 9.0.1 and Beyond
Tony McGuckin
 
SharePoint PowerShell for the Admin and Developer - A Venn Diagram Experience
SharePoint PowerShell for the Admin and Developer - A Venn Diagram ExperienceSharePoint PowerShell for the Admin and Developer - A Venn Diagram Experience
SharePoint PowerShell for the Admin and Developer - A Venn Diagram Experience
Ricardo Wilkins
 

What's hot (20)

The fundamental problems of GUI applications and why people choose React
The fundamental problems of GUI applications and why people choose ReactThe fundamental problems of GUI applications and why people choose React
The fundamental problems of GUI applications and why people choose React
 
Isomorphic web application
Isomorphic web applicationIsomorphic web application
Isomorphic web application
 
IBM Digital Experience Theme Customization
IBM Digital Experience Theme CustomizationIBM Digital Experience Theme Customization
IBM Digital Experience Theme Customization
 
GeneralMobile Hybrid Development with WordPress
GeneralMobile Hybrid Development with WordPressGeneralMobile Hybrid Development with WordPress
GeneralMobile Hybrid Development with WordPress
 
Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!
Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!
Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!
 
Single Page Applications on JavaScript and ASP.NET MVC4
Single Page Applications on JavaScript and ASP.NET MVC4Single Page Applications on JavaScript and ASP.NET MVC4
Single Page Applications on JavaScript and ASP.NET MVC4
 
Office script labs
Office script labsOffice script labs
Office script labs
 
Learning ASP.NET 5 and MVC 6
Learning ASP.NET 5 and MVC 6Learning ASP.NET 5 and MVC 6
Learning ASP.NET 5 and MVC 6
 
TypeScript and SharePoint Framework
TypeScript and SharePoint FrameworkTypeScript and SharePoint Framework
TypeScript and SharePoint Framework
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
 
The web - What it has, what it lacks and where it must go - Istanbul
The web - What it has, what it lacks and where it must go - IstanbulThe web - What it has, what it lacks and where it must go - Istanbul
The web - What it has, what it lacks and where it must go - Istanbul
 
Angular on ASP.NET MVC 6
Angular on ASP.NET MVC 6Angular on ASP.NET MVC 6
Angular on ASP.NET MVC 6
 
DEV-1430 IBM Connections Integration
DEV-1430 IBM Connections IntegrationDEV-1430 IBM Connections Integration
DEV-1430 IBM Connections Integration
 
Joomla! multiplied - How to run Multi-Sites - JandBeyond 2014
Joomla! multiplied - How to run Multi-Sites - JandBeyond 2014Joomla! multiplied - How to run Multi-Sites - JandBeyond 2014
Joomla! multiplied - How to run Multi-Sites - JandBeyond 2014
 
Bring Order to the Chaos: Take the MVC Plunge
Bring Order to the Chaos: Take the MVC PlungeBring Order to the Chaos: Take the MVC Plunge
Bring Order to the Chaos: Take the MVC Plunge
 
Engage 2019: Modernising Your Domino and XPages Applications
Engage 2019: Modernising Your Domino and XPages Applications Engage 2019: Modernising Your Domino and XPages Applications
Engage 2019: Modernising Your Domino and XPages Applications
 
OpenNTF Domino API (ODA): Super-Charging Domino Development
OpenNTF Domino API (ODA): Super-Charging Domino DevelopmentOpenNTF Domino API (ODA): Super-Charging Domino Development
OpenNTF Domino API (ODA): Super-Charging Domino Development
 
Application Lifecycle Management for Office 365 development
Application Lifecycle Management for Office 365 developmentApplication Lifecycle Management for Office 365 development
Application Lifecycle Management for Office 365 development
 
AD503: XPages Mobile Development in IBM Domino 9.0.1 and Beyond
AD503: XPages Mobile Development in IBM Domino 9.0.1 and BeyondAD503: XPages Mobile Development in IBM Domino 9.0.1 and Beyond
AD503: XPages Mobile Development in IBM Domino 9.0.1 and Beyond
 
SharePoint PowerShell for the Admin and Developer - A Venn Diagram Experience
SharePoint PowerShell for the Admin and Developer - A Venn Diagram ExperienceSharePoint PowerShell for the Admin and Developer - A Venn Diagram Experience
SharePoint PowerShell for the Admin and Developer - A Venn Diagram Experience
 

Viewers also liked

The Notes/Domino Application Development Competitive Advantage - IamLUG
The Notes/Domino Application Development Competitive Advantage - IamLUGThe Notes/Domino Application Development Competitive Advantage - IamLUG
The Notes/Domino Application Development Competitive Advantage - IamLUG
John Head
 
BP205: There’s an API for that! Why and how to build on the IBM Connections P...
BP205: There’s an API for that! Why and how to build on the IBM Connections P...BP205: There’s an API for that! Why and how to build on the IBM Connections P...
BP205: There’s an API for that! Why and how to build on the IBM Connections P...
Mikkel Flindt Heisterberg
 
IBM ConnectED 2015 - AD302 - Responsive Application Development for XPages
IBM ConnectED 2015 - AD302 - Responsive Application Development for XPagesIBM ConnectED 2015 - AD302 - Responsive Application Development for XPages
IBM ConnectED 2015 - AD302 - Responsive Application Development for XPages
beglee
 
IBM ConnectED 2015 BP110: Mastering Your Logs, Everything You Should Know abo...
IBM ConnectED 2015 BP110: Mastering Your Logs, Everything You Should Know abo...IBM ConnectED 2015 BP110: Mastering Your Logs, Everything You Should Know abo...
IBM ConnectED 2015 BP110: Mastering Your Logs, Everything You Should Know abo...
Benedek Menesi
 
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
Paul Withers
 
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and ScalabilityIBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
Paul Withers
 
BP201 Creating Your Own Connections Confection - Getting The Flavour Right
BP201 Creating Your Own Connections Confection - Getting The Flavour RightBP201 Creating Your Own Connections Confection - Getting The Flavour Right
BP201 Creating Your Own Connections Confection - Getting The Flavour Right
Gabriella Davis
 
Connections Directory Integration: A Tour Through Best Practices for Directo...
Connections Directory Integration:  A Tour Through Best Practices for Directo...Connections Directory Integration:  A Tour Through Best Practices for Directo...
Connections Directory Integration: A Tour Through Best Practices for Directo...
Gabriella Davis
 
ConnectED 2015 - IBM Notes Traveler Daily Business
ConnectED 2015 - IBM Notes Traveler Daily BusinessConnectED 2015 - IBM Notes Traveler Daily Business
ConnectED 2015 - IBM Notes Traveler Daily Business
RenĂŠ Winkelmeyer
 
External Users Accessing Connections
External Users Accessing Connections External Users Accessing Connections
External Users Accessing Connections
Gabriella Davis
 
MAS202 - Customizing IBM Connections
MAS202 - Customizing IBM ConnectionsMAS202 - Customizing IBM Connections
MAS202 - Customizing IBM Connections
paulbastide
 
Customizing the Mobile Connections App
Customizing the Mobile Connections AppCustomizing the Mobile Connections App
Customizing the Mobile Connections AppProlifics
 

Viewers also liked (12)

The Notes/Domino Application Development Competitive Advantage - IamLUG
The Notes/Domino Application Development Competitive Advantage - IamLUGThe Notes/Domino Application Development Competitive Advantage - IamLUG
The Notes/Domino Application Development Competitive Advantage - IamLUG
 
BP205: There’s an API for that! Why and how to build on the IBM Connections P...
BP205: There’s an API for that! Why and how to build on the IBM Connections P...BP205: There’s an API for that! Why and how to build on the IBM Connections P...
BP205: There’s an API for that! Why and how to build on the IBM Connections P...
 
IBM ConnectED 2015 - AD302 - Responsive Application Development for XPages
IBM ConnectED 2015 - AD302 - Responsive Application Development for XPagesIBM ConnectED 2015 - AD302 - Responsive Application Development for XPages
IBM ConnectED 2015 - AD302 - Responsive Application Development for XPages
 
IBM ConnectED 2015 BP110: Mastering Your Logs, Everything You Should Know abo...
IBM ConnectED 2015 BP110: Mastering Your Logs, Everything You Should Know abo...IBM ConnectED 2015 BP110: Mastering Your Logs, Everything You Should Know abo...
IBM ConnectED 2015 BP110: Mastering Your Logs, Everything You Should Know abo...
 
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
 
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and ScalabilityIBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
 
BP201 Creating Your Own Connections Confection - Getting The Flavour Right
BP201 Creating Your Own Connections Confection - Getting The Flavour RightBP201 Creating Your Own Connections Confection - Getting The Flavour Right
BP201 Creating Your Own Connections Confection - Getting The Flavour Right
 
Connections Directory Integration: A Tour Through Best Practices for Directo...
Connections Directory Integration:  A Tour Through Best Practices for Directo...Connections Directory Integration:  A Tour Through Best Practices for Directo...
Connections Directory Integration: A Tour Through Best Practices for Directo...
 
ConnectED 2015 - IBM Notes Traveler Daily Business
ConnectED 2015 - IBM Notes Traveler Daily BusinessConnectED 2015 - IBM Notes Traveler Daily Business
ConnectED 2015 - IBM Notes Traveler Daily Business
 
External Users Accessing Connections
External Users Accessing Connections External Users Accessing Connections
External Users Accessing Connections
 
MAS202 - Customizing IBM Connections
MAS202 - Customizing IBM ConnectionsMAS202 - Customizing IBM Connections
MAS202 - Customizing IBM Connections
 
Customizing the Mobile Connections App
Customizing the Mobile Connections AppCustomizing the Mobile Connections App
Customizing the Mobile Connections App
 

Similar to The future of web development write once, run everywhere with angular js and domino

ASP.NEt MVC and Angular What a couple
ASP.NEt MVC and Angular What a coupleASP.NEt MVC and Angular What a couple
ASP.NEt MVC and Angular What a couple
Alexandre Marreiros
 
ASP .Net Core SPA Templates
ASP .Net Core SPA TemplatesASP .Net Core SPA Templates
ASP .Net Core SPA Templates
Eamonn Boyle
 
Angular jS Introduction by Google
Angular jS Introduction by GoogleAngular jS Introduction by Google
Angular jS Introduction by Google
ASG
 
Building SPA’s (Single Page App) with Backbone.js
Building SPA’s (Single Page App) with Backbone.jsBuilding SPA’s (Single Page App) with Backbone.js
Building SPA’s (Single Page App) with Backbone.js
Microsoft Developer Network (MSDN) - Belgium and Luxembourg
 
Normalizing x pages web development
Normalizing x pages web development Normalizing x pages web development
Normalizing x pages web development
Shean McManus
 
Angular js workshop
Angular js workshopAngular js workshop
Angular js workshop
Rolands Krumbergs
 
Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Ganesh Kondal
 
Amit Kumar Architect with Web and Angular JS
Amit Kumar Architect with Web and Angular JSAmit Kumar Architect with Web and Angular JS
Amit Kumar Architect with Web and Angular JSAmit Kumar
 
Angular js firebase-preso
Angular js firebase-presoAngular js firebase-preso
Angular js firebase-preso
Avinash Kondagunta
 
Web Development Today
Web Development TodayWeb Development Today
Web Development Today
bretticus
 
Developing Apps for SharePoint 2013
Developing Apps for SharePoint 2013Developing Apps for SharePoint 2013
Developing Apps for SharePoint 2013
SPC Adriatics
 
Azure Functions Real World Examples
Azure Functions Real World Examples Azure Functions Real World Examples
Azure Functions Real World Examples
Yochay Kiriaty
 
SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem.
SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem. SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem.
SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem.
Kushan Lahiru Perera
 
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
TIMETOACT GROUP
 
Angular from Zero to Mastery - Training (Intermediate)
Angular from Zero to Mastery - Training (Intermediate)Angular from Zero to Mastery - Training (Intermediate)
Angular from Zero to Mastery - Training (Intermediate)
Smail LOUNES
 
Progressive Web Apps and React
Progressive Web Apps and ReactProgressive Web Apps and React
Progressive Web Apps and React
Mike Melusky
 
Onion Architecture with S#arp
Onion Architecture with S#arpOnion Architecture with S#arp
Onion Architecture with S#arp
Gary Pedretti
 
4 Anguadasdfasdasdfasdfsdfasdfaslar (1).pptx
4 Anguadasdfasdasdfasdfsdfasdfaslar (1).pptx4 Anguadasdfasdasdfasdfsdfasdfaslar (1).pptx
4 Anguadasdfasdasdfasdfsdfasdfaslar (1).pptx
tilejak773
 
HTML5: the new frontier of the web
HTML5: the new frontier of the webHTML5: the new frontier of the web
HTML5: the new frontier of the web
Ivano Malavolta
 

Similar to The future of web development write once, run everywhere with angular js and domino (20)

ASP.NEt MVC and Angular What a couple
ASP.NEt MVC and Angular What a coupleASP.NEt MVC and Angular What a couple
ASP.NEt MVC and Angular What a couple
 
ASP .Net Core SPA Templates
ASP .Net Core SPA TemplatesASP .Net Core SPA Templates
ASP .Net Core SPA Templates
 
Angular jS Introduction by Google
Angular jS Introduction by GoogleAngular jS Introduction by Google
Angular jS Introduction by Google
 
Building SPA’s (Single Page App) with Backbone.js
Building SPA’s (Single Page App) with Backbone.jsBuilding SPA’s (Single Page App) with Backbone.js
Building SPA’s (Single Page App) with Backbone.js
 
Normalizing x pages web development
Normalizing x pages web development Normalizing x pages web development
Normalizing x pages web development
 
Angular js workshop
Angular js workshopAngular js workshop
Angular js workshop
 
Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5
 
Amit Kumar Architect with Web and Angular JS
Amit Kumar Architect with Web and Angular JSAmit Kumar Architect with Web and Angular JS
Amit Kumar Architect with Web and Angular JS
 
Angular js firebase-preso
Angular js firebase-presoAngular js firebase-preso
Angular js firebase-preso
 
Web Development Today
Web Development TodayWeb Development Today
Web Development Today
 
Developing Apps for SharePoint 2013
Developing Apps for SharePoint 2013Developing Apps for SharePoint 2013
Developing Apps for SharePoint 2013
 
Azure Functions Real World Examples
Azure Functions Real World Examples Azure Functions Real World Examples
Azure Functions Real World Examples
 
SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem.
SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem. SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem.
SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem.
 
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
 
Angular from Zero to Mastery - Training (Intermediate)
Angular from Zero to Mastery - Training (Intermediate)Angular from Zero to Mastery - Training (Intermediate)
Angular from Zero to Mastery - Training (Intermediate)
 
Progressive Web Apps and React
Progressive Web Apps and ReactProgressive Web Apps and React
Progressive Web Apps and React
 
Chinnasamy Manickam
Chinnasamy ManickamChinnasamy Manickam
Chinnasamy Manickam
 
Onion Architecture with S#arp
Onion Architecture with S#arpOnion Architecture with S#arp
Onion Architecture with S#arp
 
4 Anguadasdfasdasdfasdfsdfasdfaslar (1).pptx
4 Anguadasdfasdasdfasdfsdfasdfaslar (1).pptx4 Anguadasdfasdasdfasdfsdfasdfaslar (1).pptx
4 Anguadasdfasdasdfasdfsdfasdfaslar (1).pptx
 
HTML5: the new frontier of the web
HTML5: the new frontier of the webHTML5: the new frontier of the web
HTML5: the new frontier of the web
 

More from Mark Leusink

Now what can you really build with DQL and web components?
Now what can you really build with DQL and web components?Now what can you really build with DQL and web components?
Now what can you really build with DQL and web components?
Mark Leusink
 
Creating mobile apps - an introduction to Ionic (Engage 2016)
Creating mobile apps - an introduction to Ionic (Engage 2016)Creating mobile apps - an introduction to Ionic (Engage 2016)
Creating mobile apps - an introduction to Ionic (Engage 2016)
Mark Leusink
 
A 20 minute introduction to AngularJS for XPage developers
A 20 minute introduction to AngularJS for XPage developersA 20 minute introduction to AngularJS for XPage developers
A 20 minute introduction to AngularJS for XPage developers
Mark Leusink
 
Bootstrap4XPages webinar
Bootstrap4XPages webinarBootstrap4XPages webinar
Bootstrap4XPages webinar
Mark Leusink
 
Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014
Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014
Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014
Mark Leusink
 
Get the best out of Bootstrap with Bootstrap4XPages (AD202)
Get the best out of Bootstrap with Bootstrap4XPages (AD202)Get the best out of Bootstrap with Bootstrap4XPages (AD202)
Get the best out of Bootstrap with Bootstrap4XPages (AD202)
Mark Leusink
 
Bootstrap and XPages (DanNotes 2013)
Bootstrap and XPages (DanNotes 2013)Bootstrap and XPages (DanNotes 2013)
Bootstrap and XPages (DanNotes 2013)
Mark Leusink
 
Introduction to Bootstrap (with XPages)
Introduction to Bootstrap (with XPages)Introduction to Bootstrap (with XPages)
Introduction to Bootstrap (with XPages)
Mark Leusink
 
Stop (de)bugging me - ICON UK 2013
Stop (de)bugging me - ICON UK 2013Stop (de)bugging me - ICON UK 2013
Stop (de)bugging me - ICON UK 2013
Mark Leusink
 
Stop (de)bugging me!
Stop (de)bugging me!Stop (de)bugging me!
Stop (de)bugging me!
Mark Leusink
 

More from Mark Leusink (10)

Now what can you really build with DQL and web components?
Now what can you really build with DQL and web components?Now what can you really build with DQL and web components?
Now what can you really build with DQL and web components?
 
Creating mobile apps - an introduction to Ionic (Engage 2016)
Creating mobile apps - an introduction to Ionic (Engage 2016)Creating mobile apps - an introduction to Ionic (Engage 2016)
Creating mobile apps - an introduction to Ionic (Engage 2016)
 
A 20 minute introduction to AngularJS for XPage developers
A 20 minute introduction to AngularJS for XPage developersA 20 minute introduction to AngularJS for XPage developers
A 20 minute introduction to AngularJS for XPage developers
 
Bootstrap4XPages webinar
Bootstrap4XPages webinarBootstrap4XPages webinar
Bootstrap4XPages webinar
 
Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014
Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014
Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014
 
Get the best out of Bootstrap with Bootstrap4XPages (AD202)
Get the best out of Bootstrap with Bootstrap4XPages (AD202)Get the best out of Bootstrap with Bootstrap4XPages (AD202)
Get the best out of Bootstrap with Bootstrap4XPages (AD202)
 
Bootstrap and XPages (DanNotes 2013)
Bootstrap and XPages (DanNotes 2013)Bootstrap and XPages (DanNotes 2013)
Bootstrap and XPages (DanNotes 2013)
 
Introduction to Bootstrap (with XPages)
Introduction to Bootstrap (with XPages)Introduction to Bootstrap (with XPages)
Introduction to Bootstrap (with XPages)
 
Stop (de)bugging me - ICON UK 2013
Stop (de)bugging me - ICON UK 2013Stop (de)bugging me - ICON UK 2013
Stop (de)bugging me - ICON UK 2013
 
Stop (de)bugging me!
Stop (de)bugging me!Stop (de)bugging me!
Stop (de)bugging me!
 

Recently uploaded

Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 

Recently uploaded (20)

Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 

The future of web development write once, run everywhere with angular js and domino

  • 2. BTE 102: The Future of Web Development Write Once, Run Everywhere with AngularJS and Domino Marky Roden Mark Leusink Senior Solutions Architect LinQed PSC Group LLC
  • 3. About Mark  Freelance consultant/ developer – XPages, web, mobile, Unplugged  15 years experience (that makes me younger than Marky)  Fan of everything web dev (Angular, Bootstrap, web components)  Open source (OpenNTF, GitHub) – XPages Debug Toolbar, Bootstrap4XPages, Bootcards  Blog: http://linqed.eu  Twitter: @markleusink  Email: m.leusink@linqed.eu
  • 4. About Marky  Over 17 years IBM Notes DominoÂŽ work  Senior Solutions Architect at PSC Group • XPages Developer • Project Leader • AngularJS Protagonist  Contact Information • Blog: http://www.xomino.com • Twitter: @markyroden • Skype: marky.roden www.psclistens.com @pscgroup
  • 5. Š 2013 IBM Corporation F O U N D E D I N 1 9 9 0 The Largest, Most Experienced XPages Service Firm in North America PSC Group, LLC Congratulates our 5 IBM Champions! Brad Balassaitis Andrew Barickman Kathy Brown John Head Mark Roden
  • 6. Agenda • Introduction to MVC/ REST architectures – True Separation of UI and Business Logic • Introduction to AngularJS – Why Angular? – Components and capabilities – Examples of capabilities • Domino as a REST Service • Demo app – Application Architecture – How to run the same app “everywhere”
  • 8. About the demo app The Demo app is built with – AngularJS – Bootstrap – IBM Domino data – Zero XPages And to make it better – A Bootstrap theme from Bootswatch.com (‘United’) – Font Awesome for icons – Animate.css for animations – FastClick.js for a snappier UI – angular-local-storage for local storage Sessions data from the Totally Unofficial Totally Unsupported session database
  • 9. INTRODUCTION TO MVC / REST ARCHITECTURE
  • 10. Introduction to MVC / REST Architecture • MVC (Model-View-Controller) is an architectural design pattern that encourages improved application organization through a separation of concerns. – The Model manages the data – The View is the HTML representation of the data through the use of Templates • What your users see – The Controller is the application code which is used to determine the way the Model is populated and displayed. • Glues the Model and View together • Angular provides the framework to do client-side MVC
  • 11. Introduction to MVC / REST Architecture • Representational state transfer (REST) is an architecture style for designing networked applications – Uses simple HTTP calls – JSON • Performant • Scalable • Simple interface • Portable
  • 12. ServerClient Introduction to MVC / REST Architecture • We’ve been building web apps like this Request page - process request - get data - create HTML Response • HTML • CSS • JavaScript (display)
  • 13. Client Introduction to MVC / REST Architecture • But this is getting popular Webserver Request page/ app Response (static HTML, JS, CSS) (process) REST API Data (JSON) Request data
  • 14. Client Introduction to MVC / REST Architecture • Or this variation Webserver Response (static HTML, JS, CSS) (process) REST API Data (JSON) Request data Request page/ app
  • 16.  AngularJS is a structural framework for dynamic web apps. It lets you use HTML as your template language and lets you extend HTML's syntax to express your application's components clearly and succinctly. Angular's data binding and dependency injection eliminate much of the code you currently have to write. “Angular is what HTML would have been had it been designed for applications” The AngularJS team
  • 17. What is AngularJS • Web application framework – Designed as a boilerplate model for an application – Out of the box capabilities and best practices – Built with test driven development (TDD) in mind • Runs in the browser, all client side JavaScript – Unlike e.g. XPages or C# (SharePoint) where most processing is done server side. • Helps to create dynamic sites / Single Page Applications – Partials? Dynamic? Been there, done that!
  • 18. Why AngularJS ? • Large developer community – ~75,000 questions tagged on Stackoverflow.com • Backed by – Developed by Google and the community – Open source (MIT license) • Stable, mature and performant – Initial release 2009 – Version 1 released Jun 2012 – Current version 1.3.5 (Dec 2014) – Version 2 scheduled for end of 2015
  • 19. Why AngularJS? • Ready for the web of tomorrow • Many Concepts adopted by Web Components standard • Data driven • Custom elements (functional custom attributes) • HTML Imports • DOM Templating
  • 20. AngularJS: Modules • Ties the code to the HTML DOM model
  • 21. Angular Route Control • UI-Router, state based management • Configures the app • When a route is encountered – Use this template – Use this Page Title – Use this controller • http://beyondtheeveryday.com/#/sessionsAll • http://beyondtheeveryday.com/#/favorites
  • 22. AngularJS: Controllers • Contains the application logic. app.controller("MainCtrl", function($rootScope, $scope, utils, localStorageService, SessionsFactory) { $scope.menuDays = [ {id: '0', label:'Sunday'}, {id: '1', label:'Monday'}, {id: '2', label:'Tuesday'}, {id: '3', label:'Wednesday'} ]; //set default active menu option $scope.pageTitle = "Connect 2015 Sessions"; $scope.activeMenu = "about";
  • 23. • Lazily instantiated, only when they are needed – “Angular services are substitutable objects that are wired together using dependency injection (DI). You can use services to organize and share code across your app” var app = angular.module("sessionsApp.services", []); app.factory('SessionsFactory', function($http) { return { all : function() { return $http.get(‘db.nsf/collections/name/sessions') .then( function(res) { return res.data; }); }, ... AngularJS: Factories and Services
  • 24. AngularJS: Directives • Tells Angular that it needs to ‘do’ something • Interact with the browser based on the controller’s instructions • Re-usable components • Much of Angular’s core functionality Directive based <div class="row" ng-repeat="speaker in session.speakers"> <div class="col-xs-12 col-sm-12"> {{speaker}} </div> </div>
  • 25. AngularJS in depth • Dependency injections A software design pattern that deals with how components get hold of their dependencies. The Angular injector subsystem is in charge of creating components, resolving their dependencies, and providing them to other components as requested.
  • 26. AngularJS in depth • How does it all hang together?
  • 27. AngularJS in depth • AngularJS core examples – ‘$scope’ sessionsAppCtrl.controller('FeedbackCtrl', function($scope, SessionsFactory) { $scope.submitted = false; $scope.submit = function() { SessionsFactory.saveFeedback( {feedback : $scope.feedback, name: $scope.name} ); $scope.submitted = true; }; });
  • 28. AngularJS in depth • AngularJS core services example – '$http' app.factory('SessionsFactory', function($http, $q, dasBaseUrl, utils) { return { all : function() { return $http.get('collections/name/sessionsAll?count=1000', {cache: true}) .then( function(res) { return res.data; }); }, ...
  • 29. AngularJS in depth • AngularJS core directives examples – ng-show / ng-hide – ng-click – ng-list, ng-class, ng-repeat, ng-keydown etc }; <div class="col-sm-8"> <button class="btn btn-default" ng-click="home()">Back</button> <button class="btn" ng-click="savePerson($event)" ng-hide="create">Save</button> <button class="btn" ng-click="createPerson($event)" ng-show="create">Create</button> </div>
  • 30. AngularJS in depth • AngularJS template example
  • 31. AngularJS in depth • How does AngularJS integrate with XPages ? • An application written using AngularJS uses 4 main things – HTML Pages – JavaScript files – CSS – A Data Service • One or many of those can be “XPages”
  • 32. DOMINO AS A REST SERVICE
  • 33. Domino as REST service • Three options to use Domino as a data store for an Angular application: – Domino Access Services • Built-in, easiest to enable – REST service component from the Extension Library • More customization options – Do-it-yourself REST service • Fully customizable, requires more work
  • 34. Domino as REST service - Domino Access Services (DAS) • Consists of 3 services: core, data and calendar – For the demo app we’ve only used the data service • Must be enabled on server level, app level and form/ view level • Gives you the data from all fields (documents) or columns (views)
  • 35. Domino as REST service - Domino Access Services (DAS) http://beyondtheeveryday.com/beyond/connect2015.nsf/api/data/collections/name/sessionsAll Server Database path DAS View name
  • 36. Domino as REST service - ExtLib REST • Drag on an XPage • Link to data source (view, bean, …) • Set path • Done <xe:restService pathInfo="contactjson"> <xe:this.service> <xe:viewJsonService viewName="AllContacts" var="entry" contentType="text/plain" count="10" defaultColumns="true"> </xe:viewJsonService> </xe:this.service> </xe:restService>
  • 37. Domino as REST service - custom REST service public class MyRESTService { public static String doGet(HttpServletRequest request, HttpServletResponse response) { JsonJavaObject json = new JsonJavaObject(); json.put("userName", ExtLibUtil.getCurrentSession().getEffectiveUserName() ); return JsonGenerator.toJson(JsonJavaFactory.instanceEx, json); } } <!--?xml version="1.0" encoding="UTF-8"?--> <![CDATA[#{javascript: var externalContext = facesContext.getExternalContext(); var writer = facesContext.getResponseWriter(); writer.write( eu.linqed.MyRESTService.doGet( externalContext.getRequest(),externalContext.getResponse() )); writer.endDocument(); } }]]>
  • 38. Domino as REST service • More on this: “REST Services and IBM Domino/XWork” by John Dalsgaard – http://www.slideshare.net/JohnDalsgaard/dannotes-19-20-november-2014
  • 39. AngularJS in XPages • How does AngularJS work? Model View Controller
  • 41. Demo app • Demonstration you just saw was hosted on…. – IBM Domino ÂŽ – IBM Bluemix ÂŽ – Microsoft SharePoint ÂŽ – IBM MobileFirst Platform Foundation ÂŽ (previously: IBM Worklight) – IBM Connections • Open source – http://github.com/markleusink/BeyondSessionsApp
  • 43. Conclusion • AngularJS: MVC front end client side framework • Add structure to your code • Enables hybrid mobile web apps – PhoneGap, Cordova, Worklight • Use Domino as a NoSQL app server – Out-of-the-Box, Proven, Stable, Rock solid security
  • 44. Conclusion • Modernize Domino Applications smartly • Running Domino apps within other server platforms • Make your application code portable
  • 46. Engage Online  SocialBiz User Group socialbizug.org – Join the epicenter of Notes and Collaboration user groups  Social Business Insights blog ibm.com/blogs/socialbusiness – Read and engage with our bloggers  Follow us on Twitter – @IBMConnect and @IBMSocialBiz  LinkedIn http://bit.ly/SBComm – Participate in the IBM Social Business group on LinkedIn  Facebook https://www.facebook.com/IBMConnected – Like IBM Social Business on Facebook
  • 47. Notices and Disclaimers Copyright Š 2015 by International Business Machines Corporation (IBM). No part of this document may be reproduced or transmitted in any form without written permission from IBM. U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM. Information in these presentations (including information relating to products that have not yet been announced by IBM) has been reviewed for accuracy as of the date of initial publication and could include unintentional technical or typographical errors. IBM shall have no responsibility to update this information. THIS DOCUMENT IS DISTRIBUTED "AS IS" WITHOUT ANY WARRANTY, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL IBM BE LIABLE FOR ANY DAMAGE ARISING FROM THE USE OF THIS INFORMATION, INCLUDING BUT NOT LIMITED TO, LOSS OF DATA, BUSINESS INTERRUPTION, LOSS OF PROFIT OR LOSS OF OPPORTUNITY. IBM products and services are warranted according to the terms and conditions of the agreements under which they are provided. Any statements regarding IBM's future direction, intent or product plans are subject to change or withdrawal without notice. Performance data contained herein was generally obtained in a controlled, isolated environments. Customer examples are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual performance, cost, savings or other results in other operating environments may vary. References in this document to IBM products, programs, or services does not imply that IBM intends to make such products, programs or services available in all countries in which IBM operates or does business. Workshops, sessions and associated materials may have been prepared by independent session speakers, and do not necessarily reflect the views of IBM. All materials and discussions are provided for informational purposes only, and are neither intended to, nor shall constitute legal or other guidance or advice to any individual participant or their specific situation. It is the customer’s responsibility to insure its own compliance with legal requirements and to obtain advice of competent legal counsel as to the identification and interpretation of any relevant laws and regulatory requirements that may affect the customer’s business and any actions the customer may need to take to comply with such laws. IBM does not provide legal advice or represent or warrant that its services or products will ensure that the customer is in compliance with any law. Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products in connection with this publication and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. IBM does not warrant the quality of any third-party products, or the ability of any such third-party products to interoperate with IBM’s products. IBM EXPRESSLY DISCLAIMS ALL WARRANTIES, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. The provision of the information contained herein is not intended to, and does not, grant any right or license under any IBM patents, copyrights, trademarks or other intellectual property right. IBM, the IBM logo, ibm.com, BrassRingÂŽ, Connections™, DominoÂŽ, Global Business ServicesÂŽ, Global Technology ServicesÂŽ, SmartCloudÂŽ, Social BusinessÂŽ, KenexaÂŽ, NotesÂŽ, PartnerWorldÂŽ, Prove It!ÂŽ, PureSystemsÂŽ, SametimeÂŽ, Verse™, Watson™, WebSphereÂŽ, WorklightÂŽ, are trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at "Copyright and trademark information" at: www.ibm.com/legal/copytrade.shtml.