SlideShare a Scribd company logo
AD-1380: A Beard, An App, A Blender
Eric McCormick
Who?
Who is talking?
• Eric McCormick
• developer
• husband
• father
• veteran
• former EMT
• blogger
• …more than I have space for
edm00se.io
@edm00se
Who, continued
• Web Developer at
▪ a fourth-generation, family-owned professional
construction services firm, in operation since 1889
• my focus usually revolves around:
▪ document control
▪ productivity and performance metrics
▪ system integration
▪ process automation
Who's This Session For, and Why?
• Developers, who have a passion for
▪ application structure, standards, and maintenance
▪ documentation
▪ testing
▪ automation
• Non-Developers (development-adjacent roles)
▪ who want a developer's take on the above
What's the Session?
AD-1380: A Beard, An App, A Blender…
• …one developer’s take on building applications with
Domino/XPages
• should probably be …one developer’s take on expanding how
we can build applications with Domino/XPages
Session Abstract
Building applications with Domino/XPages opens a number of doors.
Choosing the right path is what becomes hard. This is a session on one
developer's take on the way we can structure our applications to get the
best of the Domino/XPages platform in addition to all the modern, front-
end tooling that the rest of the industry is using to great advantage. This
session will cover an approach to app dev via application segregation
mechanics, providing the data via HttpServlets to provide a RESTful
JSON API, and a UI-layer that automates the majority of concerns via a
JS MV* framework. Front-end tooling via Yeoman, Grunt, and Bower
(and/or others) can aid in our development and testing, back-end mocks
for making contracted work easier, and other techniques.
Ms. America Statement
1. A harmonious development environment for myself and any
development staff at my company
2. A unified theory practice of development, for consistent cross-
platform and cross-app development behavior
3. Making all application logic and data consistently accessible
across separate, but organic, systems
4. Making contracted development work more easily performed
5. Automating everything I can
Alternative Session Title
Eric McCormick
and the Quest to Develop
Amazing Applications
My Personal Goals (a.k.a.- my ‘quest’)
• Use the best tools available to aid my development workflow
• Automate all tasks I can, for consistency, ease, and speed
• Enforce coding, documentation, and testing standards at each
level of the application
• All of which feeds into my ultimate goal of developing the best
apps I can, by enabling the developer (that's me!)
I Want It All
Session Overview
Session Content
• Application Structure
• Segregated back- and front-ends
• Services layering concepts (by nature and convention)
• Back-End
• Beans, Controllers, and M-V-C advantages
• RESTful API benefits, via HTTPServlets
• Front-End
• M-V-* and JS frameworks
• Advanced tooling for better/faster/stronger development
Concerning Application
Structure
Application Structure?
Segregation of Application Into Service Layers
• a decoupling of the layers of your application into micro-
services*
• separates the primary application logic into its own classes
• keeps the UI logic all at the UI level
• keeps styling and presentation out of the logic
• keep all your code readable by not just yourself, but others
Application Structure? (pt.2)
Application Layers (as I see them)
• data store / DB (NSF)
• primary application classes (server elements for data objects,
controllers for behavior, server actions)
• expose application via servlets (RESTful or otherwise), XPages
bindings (EL to bean, or data object)
• provides interface to UI layer (where the client-side logic lives)
Application Structure? (pt.3)
• we’re already starting to talk in terms of what we will require for an
application’s
• data
• primary business logic (which wrapped with the database
creates the data service)
• creating an API, for how a user or front-end can interface with
our service
• all of this makes our choice of front-end, be it an XPages app with
managed bean or object data source (xe:objectData) or a non-
XPages front-end immaterial far less consequential
Advantages and Disadvantages
Advantages
• consistency in an app and
across apps
• normalizing of development
patterns
• easier to:
• support/maintain
• document
• test
Disadvantages
• time
• thought
• willingness to attempt
• management sign-off
High Level Overview
Service Layers
• keeps:
• data
• logic
• client interface
• all nice and tidy, this benefits in the forms of:
• organization
• maintenance
• documentation (let’s face it, a JavaDoc is better than no
doc)
Stay With Me Now
Application Structure Related References
• Jesse Gallagher
blog: https://frostillic.us
• Dec’s Dom Blog
blog: http://www.qtzar.com/
• Pipalia
blog: http://www.pipalia.co.uk/blog/
• John Daalsgard
blog: https://www.dalsgaard-data.eu/blog/
• Paul S. Withers
http://www.intec.co.uk/blog/
Amongst many others.
Concerning the App’s Back-End
SSJS and Java
SSJS
• was meant to help bring in
gun shy developers
• com.ibm.jscript isn’t SSJS
like other (more popular)
SSJS implementations
• DDE often misses complex
context assistance as JS is
not a strongly type’d
language
Java
• is a strong type’d language
• “no” (normal API induced)
runtime exceptions
• is (more) extensible
• more industry norm
• (DD)Eclipse “does Java well”
A Horrific Pitfall
Spaghetti Code™
• un-supportable applications that have logic strewn about
through design/markup (where is the code that’s breaking?)
• overly large SSJS script libraries that add runtime parse bloat
• a lack of concise organization which any larger app needs
SSJS is a crutch (at least for non-trivial / non-RAD applications)
It works, but the overarching answer is to use the Java of XPages
for better performance, structure, and sanity.
Making Sense of the Back-End pt.1
Data as a resource…
• how should the data:
• validate
• at the db / data object level
• at the ui level
• integrate
• methods of exposure (collections, records, actions)
• with other systems
Making Sense of the Back-End pt.2
Use the best tools at your disposal!
• OpenNTF Domino API
• Git (or Mercurial)
• Swiper (to eliminate extraneous output to ODP)
• Apache Commons libraries (e.g.- CollectionUtils, validators)
• Google GSON
• Barista (for bean fans)
• Jesse’s Controllers (or whole frostillicus framework)
Java Policy
*Certain Java libraries won’t run from an NSF container (versus
OSGi plug-in) without the java.pol(icy) having additional
permissions being granted.
Setting the grant block for all permission can sound “scary”, but
really only means that you’re trusting your NSF contained Java
code to not bork your server via the class loader involved.
Back-End Components Demo (#1)
Concerning the App’s Front-End
Fasten Your Seatbelt
M-V-* and JS Frameworks
• an explosion of frameworks and libraries that can help make our
development easier
• frameworks adopting MVC, MVM, MVVM, MV* approaches to
automate the data bindings and logic
• a veritable potpourri of options and many developers have quite
different takes on which framework to use and why
• this can be highly opinionated, even heated
Advanced Tooling
• dependency management for the front-end
• scaffolding repeatable parts of development
• task runners to provision:
• distributable / deployment builds
• complete with minification/uglification
• automatic reload during development
• unit / e2e testing
• publishing documentation
In other words…
If you can, automate it!
Front-End Components Demo (#2)
Opportunity Demo (#3)
Opportunity Demo (#4)
Q&A
Summary
• we’ve covered the components of application structure options and
practices to build better applications through segregated service
layers
• …practices and techniques to automate and expedite our data
modeling and delivery of our data service with business logic,
exposing it via RESTful API (or others)
• …front-end frameworks for better UI-layers in applications
• …advanced tooling which can help aid in creating those advanced
front-ends and provide a completed picture of testing,
documentation, and deployment beyond the back-end
• we did not cover how to grow a beard
Let’s Build Happy Little Apps
Thank You
Acknowledgements and Disclaimers
Availability. References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates.
The workshops, sessions and materials have been prepared by IBM or the session speakers and reflect their own views. They are provided for informational
purposes only, and are neither intended to, nor shall have the effect of being, legal or other guidance or advice to any participant. While efforts were made to
verify the completeness and accuracy of the information contained in this presentation, it is provided AS-IS without warranty of any kind, express or implied. IBM
shall not be responsible for any damages arising out of the use of, or otherwise related to, this presentation or any other materials. Nothing contained in this
presentation is intended to, nor shall have the effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and
conditions of the applicable license agreement governing the use of IBM software.
All customer examples described are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual
environmental costs and performance characteristics may vary by customer. Nothing contained in these materials is intended to, nor shall have the effect of,
stating or implying that any activities undertaken by you will result in any specific sales, revenue growth or other results.
Acknowledgements and Disclaimers cont.
© Copyright IBM Corporation 2015. All rights reserved.
• U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
• IBM, the IBM logo, ibm.com, IBM Bluemix, IBM Domino, and IBM XPages are trademarks or registered trademarks of International Business Machines
Corporation in the United States, other countries, or both. If these and other IBM trademarked terms are marked on their first occurrence in this information with
a trademark symbol (® or ™), these symbols indicate U.S. registered or common law trademarks owned by IBM at the time this information was published.
Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at “Copyright
and trademark information” at www.ibm.com/legal/copytrade.shtml
Monty Python and the Holy Grail and its images and likenesses are intellectual property (trademarked or otherwise) of the Monty Python comedy group (a.k.a.-
Monty Python’s Flying Circus).
LEGO Deadpool and its character’s likeness is trademarked and owned by Marvel and LEGO.
Range is property of Paramount Pictures and Nickelodeon Movies.
The IT Crowd is property of Talkback Thames and Retort, as aired on BBC.
The Joy of Painting, with artist Bob Ross, is property of Bob Ross and BRI Productions.
Other company, product, or service names may be trademarks or service marks of others.

More Related Content

PDF
AD1542 Get Hands On With Bluemix
PDF
Building Responsive Applications Using XPages
PDF
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...
PDF
Using Cool New Frameworks in (Mobile) Domino Apps
PDF
Expanding XPages with Bootstrap Plugins for Ultimate Usability
ODP
IBM ConnectED 2015 - AD302 - Responsive Application Development for XPages
PPT
Engage - Expanding XPages with Bootstrap Plugins for ultimate usability
PDF
Optimus XPages Part 2: The Deep Dive
AD1542 Get Hands On With Bluemix
Building Responsive Applications Using XPages
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...
Using Cool New Frameworks in (Mobile) Domino Apps
Expanding XPages with Bootstrap Plugins for Ultimate Usability
IBM ConnectED 2015 - AD302 - Responsive Application Development for XPages
Engage - Expanding XPages with Bootstrap Plugins for ultimate usability
Optimus XPages Part 2: The Deep Dive

What's hot (20)

PDF
Optimus XPages: An Explosion of Techniques and Best Practices
PDF
Ask the XPages Experts
PDF
XPages Application Layout Control - TLCC March, 2014 Webinar
PDF
IBM Presents the Notes Domino Roadmap and a Deep Dive into Feature Pack 8
PDF
Anatomy of an HTML 5 mobile web app
PDF
IBM Connect 2017: Back from the Dead: When Bad Code Kills a Good Server
PDF
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
PDF
Tip from ConnectED 2015: Using Bootstrap and Ratchet frameworks in Domino mob...
PDF
SmartNSF - 100% Smart - and in Color!
PPTX
An Introduction to Web Components
PPTX
[Delimon] Unraveling Teams vs Skype for Business
PDF
TYPO3 5.0 Experience Concept
PDF
HTML5 or Android for Mobile Development?
PPTX
MWLUG - Universal Java
PPTX
ECS19 - Michael Noel - Replacing Third-Party Solutions with Office 365 Tools
PDF
Extreme Web Performance for Mobile Devices - Velocity NY
PDF
Creating an Effective Mobile API
PDF
Naked and afraid Offline Mobile
PPTX
PowerShell for the Anxious ITPro
Optimus XPages: An Explosion of Techniques and Best Practices
Ask the XPages Experts
XPages Application Layout Control - TLCC March, 2014 Webinar
IBM Presents the Notes Domino Roadmap and a Deep Dive into Feature Pack 8
Anatomy of an HTML 5 mobile web app
IBM Connect 2017: Back from the Dead: When Bad Code Kills a Good Server
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
Tip from ConnectED 2015: Using Bootstrap and Ratchet frameworks in Domino mob...
SmartNSF - 100% Smart - and in Color!
An Introduction to Web Components
[Delimon] Unraveling Teams vs Skype for Business
TYPO3 5.0 Experience Concept
HTML5 or Android for Mobile Development?
MWLUG - Universal Java
ECS19 - Michael Noel - Replacing Third-Party Solutions with Office 365 Tools
Extreme Web Performance for Mobile Devices - Velocity NY
Creating an Effective Mobile API
Naked and afraid Offline Mobile
PowerShell for the Anxious ITPro
Ad

Viewers also liked (7)

PDF
Speed geeking-lotusscript
PDF
What the App? : A Modernization Strategy for Your Business Applications
PDF
XPages and jQuery DataTables: Simplifying View Creation while Maximizing Func...
PDF
IBM Connect 2016 - AD1548 - Building Responsive XPages Applications
PDF
D8 l55g formation-introduction-a-ibm-lotus-domino-8-5-xpages
PPTX
MWLUG 2016 : AD117 : Xpages & jQuery DataTables
PDF
Connect 2016-Move Your XPages Applications to the Fast Lane
Speed geeking-lotusscript
What the App? : A Modernization Strategy for Your Business Applications
XPages and jQuery DataTables: Simplifying View Creation while Maximizing Func...
IBM Connect 2016 - AD1548 - Building Responsive XPages Applications
D8 l55g formation-introduction-a-ibm-lotus-domino-8-5-xpages
MWLUG 2016 : AD117 : Xpages & jQuery DataTables
Connect 2016-Move Your XPages Applications to the Fast Lane
Ad

Similar to A Beard, An App, A Blender (20)

PPTX
Salesforce Multitenant Architecture: How We Do the Magic We Do
PDF
Online examination management system..pdf
DOC
Anupam chaturvedi resume latest
PDF
OOSE UNIT-1.pdf
PDF
Building Information Systems using Event Modeling (Bobby Calderwood, Evident ...
PPTX
Introduction To Software Concepts Unit 1 & 2
PDF
Designing and Implementing Information Systems with Event Modeling, Bobby Cal...
DOC
PPTX
ALM with TFS: From the Drawing Board to the Cloud
PDF
Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013
DOC
Arnab Chakraborty CV
DOCX
Property dealing , A .net project
PDF
SharePoint as a Business Platform Why, What and How? – No Code
PDF
Supermarket Management System Project Report.pdf
PPTX
Continuous Performance Testing and Monitoring in Agile Development
PPTX
Testing quick interview preparation
PPT
DevOps101 (version 2)
PDF
Clean architecture with asp.net core
PPTX
Critical Capabilities to Shifting Left the Right Way
PDF
Encontrando la Aguja en el Rendimiento de Aplicaciones
Salesforce Multitenant Architecture: How We Do the Magic We Do
Online examination management system..pdf
Anupam chaturvedi resume latest
OOSE UNIT-1.pdf
Building Information Systems using Event Modeling (Bobby Calderwood, Evident ...
Introduction To Software Concepts Unit 1 & 2
Designing and Implementing Information Systems with Event Modeling, Bobby Cal...
ALM with TFS: From the Drawing Board to the Cloud
Webinar: Ten Ways to Enhance Your Salesforce.com Application in 2013
Arnab Chakraborty CV
Property dealing , A .net project
SharePoint as a Business Platform Why, What and How? – No Code
Supermarket Management System Project Report.pdf
Continuous Performance Testing and Monitoring in Agile Development
Testing quick interview preparation
DevOps101 (version 2)
Clean architecture with asp.net core
Critical Capabilities to Shifting Left the Right Way
Encontrando la Aguja en el Rendimiento de Aplicaciones

Recently uploaded (20)

PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
Approach and Philosophy of On baking technology
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Machine learning based COVID-19 study performance prediction
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
cloud_computing_Infrastucture_as_cloud_p
PPTX
Tartificialntelligence_presentation.pptx
PDF
Heart disease approach using modified random forest and particle swarm optimi...
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PPTX
1. Introduction to Computer Programming.pptx
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPTX
TLE Review Electricity (Electricity).pptx
PDF
Spectral efficient network and resource selection model in 5G networks
Group 1 Presentation -Planning and Decision Making .pptx
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
Approach and Philosophy of On baking technology
MIND Revenue Release Quarter 2 2025 Press Release
Reach Out and Touch Someone: Haptics and Empathic Computing
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Machine learning based COVID-19 study performance prediction
Building Integrated photovoltaic BIPV_UPV.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
cloud_computing_Infrastucture_as_cloud_p
Tartificialntelligence_presentation.pptx
Heart disease approach using modified random forest and particle swarm optimi...
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Advanced methodologies resolving dimensionality complications for autism neur...
gpt5_lecture_notes_comprehensive_20250812015547.pdf
1. Introduction to Computer Programming.pptx
SOPHOS-XG Firewall Administrator PPT.pptx
Assigned Numbers - 2025 - Bluetooth® Document
TLE Review Electricity (Electricity).pptx
Spectral efficient network and resource selection model in 5G networks

A Beard, An App, A Blender

  • 1. AD-1380: A Beard, An App, A Blender Eric McCormick
  • 3. Who is talking? • Eric McCormick • developer • husband • father • veteran • former EMT • blogger • …more than I have space for edm00se.io @edm00se
  • 4. Who, continued • Web Developer at ▪ a fourth-generation, family-owned professional construction services firm, in operation since 1889 • my focus usually revolves around: ▪ document control ▪ productivity and performance metrics ▪ system integration ▪ process automation
  • 5. Who's This Session For, and Why? • Developers, who have a passion for ▪ application structure, standards, and maintenance ▪ documentation ▪ testing ▪ automation • Non-Developers (development-adjacent roles) ▪ who want a developer's take on the above
  • 7. AD-1380: A Beard, An App, A Blender… • …one developer’s take on building applications with Domino/XPages • should probably be …one developer’s take on expanding how we can build applications with Domino/XPages
  • 8. Session Abstract Building applications with Domino/XPages opens a number of doors. Choosing the right path is what becomes hard. This is a session on one developer's take on the way we can structure our applications to get the best of the Domino/XPages platform in addition to all the modern, front- end tooling that the rest of the industry is using to great advantage. This session will cover an approach to app dev via application segregation mechanics, providing the data via HttpServlets to provide a RESTful JSON API, and a UI-layer that automates the majority of concerns via a JS MV* framework. Front-end tooling via Yeoman, Grunt, and Bower (and/or others) can aid in our development and testing, back-end mocks for making contracted work easier, and other techniques.
  • 9. Ms. America Statement 1. A harmonious development environment for myself and any development staff at my company 2. A unified theory practice of development, for consistent cross- platform and cross-app development behavior 3. Making all application logic and data consistently accessible across separate, but organic, systems 4. Making contracted development work more easily performed 5. Automating everything I can
  • 10. Alternative Session Title Eric McCormick and the Quest to Develop Amazing Applications
  • 11. My Personal Goals (a.k.a.- my ‘quest’) • Use the best tools available to aid my development workflow • Automate all tasks I can, for consistency, ease, and speed • Enforce coding, documentation, and testing standards at each level of the application • All of which feeds into my ultimate goal of developing the best apps I can, by enabling the developer (that's me!)
  • 12. I Want It All
  • 14. Session Content • Application Structure • Segregated back- and front-ends • Services layering concepts (by nature and convention) • Back-End • Beans, Controllers, and M-V-C advantages • RESTful API benefits, via HTTPServlets • Front-End • M-V-* and JS frameworks • Advanced tooling for better/faster/stronger development
  • 16. Application Structure? Segregation of Application Into Service Layers • a decoupling of the layers of your application into micro- services* • separates the primary application logic into its own classes • keeps the UI logic all at the UI level • keeps styling and presentation out of the logic • keep all your code readable by not just yourself, but others
  • 17. Application Structure? (pt.2) Application Layers (as I see them) • data store / DB (NSF) • primary application classes (server elements for data objects, controllers for behavior, server actions) • expose application via servlets (RESTful or otherwise), XPages bindings (EL to bean, or data object) • provides interface to UI layer (where the client-side logic lives)
  • 18. Application Structure? (pt.3) • we’re already starting to talk in terms of what we will require for an application’s • data • primary business logic (which wrapped with the database creates the data service) • creating an API, for how a user or front-end can interface with our service • all of this makes our choice of front-end, be it an XPages app with managed bean or object data source (xe:objectData) or a non- XPages front-end immaterial far less consequential
  • 19. Advantages and Disadvantages Advantages • consistency in an app and across apps • normalizing of development patterns • easier to: • support/maintain • document • test Disadvantages • time • thought • willingness to attempt • management sign-off
  • 21. Service Layers • keeps: • data • logic • client interface • all nice and tidy, this benefits in the forms of: • organization • maintenance • documentation (let’s face it, a JavaDoc is better than no doc)
  • 23. Application Structure Related References • Jesse Gallagher blog: https://frostillic.us • Dec’s Dom Blog blog: http://www.qtzar.com/ • Pipalia blog: http://www.pipalia.co.uk/blog/ • John Daalsgard blog: https://www.dalsgaard-data.eu/blog/ • Paul S. Withers http://www.intec.co.uk/blog/ Amongst many others.
  • 25. SSJS and Java SSJS • was meant to help bring in gun shy developers • com.ibm.jscript isn’t SSJS like other (more popular) SSJS implementations • DDE often misses complex context assistance as JS is not a strongly type’d language Java • is a strong type’d language • “no” (normal API induced) runtime exceptions • is (more) extensible • more industry norm • (DD)Eclipse “does Java well”
  • 26. A Horrific Pitfall Spaghetti Code™ • un-supportable applications that have logic strewn about through design/markup (where is the code that’s breaking?) • overly large SSJS script libraries that add runtime parse bloat • a lack of concise organization which any larger app needs SSJS is a crutch (at least for non-trivial / non-RAD applications) It works, but the overarching answer is to use the Java of XPages for better performance, structure, and sanity.
  • 27. Making Sense of the Back-End pt.1 Data as a resource… • how should the data: • validate • at the db / data object level • at the ui level • integrate • methods of exposure (collections, records, actions) • with other systems
  • 28. Making Sense of the Back-End pt.2 Use the best tools at your disposal! • OpenNTF Domino API • Git (or Mercurial) • Swiper (to eliminate extraneous output to ODP) • Apache Commons libraries (e.g.- CollectionUtils, validators) • Google GSON • Barista (for bean fans) • Jesse’s Controllers (or whole frostillicus framework)
  • 29. Java Policy *Certain Java libraries won’t run from an NSF container (versus OSGi plug-in) without the java.pol(icy) having additional permissions being granted. Setting the grant block for all permission can sound “scary”, but really only means that you’re trusting your NSF contained Java code to not bork your server via the class loader involved.
  • 33. M-V-* and JS Frameworks • an explosion of frameworks and libraries that can help make our development easier • frameworks adopting MVC, MVM, MVVM, MV* approaches to automate the data bindings and logic • a veritable potpourri of options and many developers have quite different takes on which framework to use and why • this can be highly opinionated, even heated
  • 34. Advanced Tooling • dependency management for the front-end • scaffolding repeatable parts of development • task runners to provision: • distributable / deployment builds • complete with minification/uglification • automatic reload during development • unit / e2e testing • publishing documentation
  • 35. In other words… If you can, automate it!
  • 39. Q&A
  • 40. Summary • we’ve covered the components of application structure options and practices to build better applications through segregated service layers • …practices and techniques to automate and expedite our data modeling and delivery of our data service with business logic, exposing it via RESTful API (or others) • …front-end frameworks for better UI-layers in applications • …advanced tooling which can help aid in creating those advanced front-ends and provide a completed picture of testing, documentation, and deployment beyond the back-end • we did not cover how to grow a beard
  • 41. Let’s Build Happy Little Apps
  • 43. Acknowledgements and Disclaimers Availability. References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. The workshops, sessions and materials have been prepared by IBM or the session speakers and reflect their own views. They are provided for informational purposes only, and are neither intended to, nor shall have the effect of being, legal or other guidance or advice to any participant. While efforts were made to verify the completeness and accuracy of the information contained in this presentation, it is provided AS-IS without warranty of any kind, express or implied. IBM shall not be responsible for any damages arising out of the use of, or otherwise related to, this presentation or any other materials. Nothing contained in this presentation is intended to, nor shall have the effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software. All customer examples described are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual environmental costs and performance characteristics may vary by customer. Nothing contained in these materials is intended to, nor shall have the effect of, stating or implying that any activities undertaken by you will result in any specific sales, revenue growth or other results.
  • 44. Acknowledgements and Disclaimers cont. © Copyright IBM Corporation 2015. All rights reserved. • U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. • IBM, the IBM logo, ibm.com, IBM Bluemix, IBM Domino, and IBM XPages are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. If these and other IBM trademarked terms are marked on their first occurrence in this information with a trademark symbol (® or ™), these symbols indicate U.S. registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at “Copyright and trademark information” at www.ibm.com/legal/copytrade.shtml Monty Python and the Holy Grail and its images and likenesses are intellectual property (trademarked or otherwise) of the Monty Python comedy group (a.k.a.- Monty Python’s Flying Circus). LEGO Deadpool and its character’s likeness is trademarked and owned by Marvel and LEGO. Range is property of Paramount Pictures and Nickelodeon Movies. The IT Crowd is property of Talkback Thames and Retort, as aired on BBC. The Joy of Painting, with artist Bob Ross, is property of Bob Ross and BRI Productions. Other company, product, or service names may be trademarks or service marks of others.

Editor's Notes

  • #20: The advantages sell themselves. As for disadvantages, if anyone believes it’s more time consuming to approach a proper layout to an application when it’s being initially constructed or in its infancy, there is virtually no cost. Converting takes time, so lay your foundation well. I used to think that my management would have some difficulty accepting my thoughts and approaches on the higher level side of my application development efforts, but when it came down to it, after running into multiple issues over multiple years with our largest app (which I maintain and continue development on in a few areas), I’ve found that the more I do talk with my management about the larger issues, the more they assume I have any tedium handled. This has taken a few years but has paid dividends; especially when it comes to building trust with my management after several creative solutions following the POODLE + other HTTPS/SSL debacles over the last year or so. In other words, when your management take you seriously when you prefix a thought with “Eric’s crazy talk”, you’ve reached a level of trust; trust cultivated from time and effort spent not just on creating widget X, but also understanding the ramifications of that widget, it’s interactions, and how it will work in a deployed, at scale capacity.
  • #21: Focusing on application structure and the flow of data (which is how my head works). There are great other angles to look at an application before/during/after during continuing development, such as user interactions (how many clicks, ease of access), but when it comes to interfacing with data, which is usually my biggest concern, this is what makes sense to me.
  • #23: Rango may be in a whole heap of trouble for all his tall tales, but “stay with me now”.
  • #24: I’m not the only one talking about app structure. In fact, this is probably one of the most common 2nd or 3rd order themes amongst developers since applications began being developed. Here are some references which have been great additions for the cause in the Domino / XPages world.
  • #26: Domino/XPages SSJS is a weird beast, only supports up through ECMAScript 4, and while you can specify a variable’s type (using colon notation), it’s not the norm for most people. Also, if you’re going to specify type for each variable, what’s the big complaint about Java? “No runtime exceptions” = shouldn’t be likely, if ever. If only we could deal with a native API that doesn’t throw NotesExceptions for about everything. Eclipse “does java well” in the sense that the content assistance and overall Java editor experience is an excellent standard.
  • #27: Some have avoided Java in XPages because Java is “scary”. While some may seem daunted, it’s not that hard for a developer to pick up, has been around long enough to be a mature language, performs
  • #28: As my data service diagram depicts, there are options. Finding the needs of an application, connections and integrations with other systems and points of entry, so to speak, can help drive our direction.
  • #29: Note: some of these require a change in the java.pol(icy) file for security permissions. Non-obvious things: GSON lets you reflect data from JSON to a proper Java Object (by its class definition) in addition to a convenient toJson method; it sure beats the snot out of typing out the lines for creating a new object, create new property (by type), then setting the value, etc. Swiper eliminates a lot of the “bloat” of syncing with an On Disk Project (ODP) and is what allowed me to take our largest app to its first, prototype stage of build automation using headless DDE (was previously generating too many conflicting design elements, making the app non-usable OoB).
  • #34: What I chose and why, along with other options.
  • #42: My quest isn’t over, as I’m learning something new every day.