OTN TechBlog

Subscribe to OTN TechBlog feed
Oracle Blogs
Updated: 16 hours 1 min ago

Video: Making RESTful Web Services the Easy Way with Node.js | Dan McGhan

Mon, 2017-07-17 13:28

Drivers make it easy to connect to and run statements against a database. That means they're perfect for creating RESTful APIs, right? You'll want to add some pagination capabilities, maybe sorting controls, and perhaps some generic filtering options. You could do all that with the driver and some smart code, but is there an easier way?  In this video replay of Dan McGhan's session from the Full Stack Web track in the recent Oracle Code Online event, you'll learn about some of the challenges associated with manual API creation using drivers, and about several tools that offer similar functionality out of the box, including Loopback, Sails, and Oracle REST Data Services. Watch the video!

Related Resources

Video: Taming the Asynchronous Nature of Node.js

Node.js Community Space

Video: Implementing Node.js in the Enterprise

Mocha.js for Test Automation of Node.js REST API on Oracle Developer Cloud Service

Video: Discover Graal: Open Source Polyglot Runtime Environment

Fri, 2017-07-14 08:27

Have you discovered Graal? It's a new open source project created by Oracle Labs. "Graal allows you to deploy virtually any language in a single environment and actually deploy multiple languages in that same environment," explains Scott Lynn in this interview. "So you can have a JavaScript front end that talks to an R back-end that's talking to a database, for example. And there isn't the normal requirement of creating, say, a JSON file to actually send a command over to the R engine and then have the R engine execute and send a JSON file back with the data in it. You can literally just transfer the objects back and forth, because they're in the same language environment."

Scott, director of product strategy for Oracle Linux, delivered the session "Polyglot Development and Deployment Through Language Environment Virtualization" at the Oracle Code event in Atlanta, GA on June 22, 2017. He took a break from prepping for his session to talk with me about Graal and invite developers to get involved in this open source project, available on GitHub. Watch the video!

BTW: Scott will present a session on Graal at the Oracle Code event in Sydney, Australia on Tuesday July 18, 2017. If you'll be in the neighborhood, there's still time to register.

 

Additional Resources

Video: Microservices and Modern Software Development

Wed, 2017-07-12 07:00

Microservices are pretty much a done deal, according to Mark Cavage VP or Software Development for Oracle. "I think almost everybody out there admits that in some part of their organization they're going to build a microservices-based application. Across the board. That's a given." It's also a given that Docker is part of the plan. "Docker is the the fundamental technology used to encapsulate an application and ship it from laptop through testing through production."

Mark and his colleague Chad Arimura, also an Oracle VP of Software Develpment, stopped by the DevLIVE set at Oracle Code Atlanta to recap their keynote session, "Microservices: Where are We, and How Did We Get Here," and chat about containers, Kubernetes, Werker, serveless architectures, and a whole lot more. Watch the interview.

Related Content

 

Video: Think in a Functional Style to Produce Concise Code

Tue, 2017-07-11 07:23

The addition of lambda and Streams to Java 8 made it much easier for developers to think in a functional style to produce concise, readable code. In this interview, Josh Backfield, a senior software engineer at Booz Allen Hamilton, digs into some of details and recaps his Oracle Code Atlanta technical session.

Additional Resources

 

 

Video: Data Visualization: Just Say No to the Default Sort Order

Fri, 2017-07-07 08:37

It has been a while since I've posted any Business Intelligence content on this blog, but that drought ends now with this new 2 Minute Tech Tip from Oracle ACE Tim Vlamis. If I were giving out trophies for the shortest-ever 2MTT, Tim would take the prize. His tip clocks in at a mere 33 seconds, so you have no excuse for not taking a micro-break to absorb some of Tim's BI insight.

Tim's tip was recorded at the 2017 Great Lakes Oracle Conference (GLOC),  which was held practically in my back yard. Well, about 25 minutes east of my back yard, in beautiful downtown Cleveland, Ohio. As has been the case for the last couple of years, I had the good fortune to host a dinner for a group of Oracle ACEs who participated in the GLOC event, which is organized each year by the Northeast Ohio Oracle Users Group. We had a great dinner at the Greenhouse Tavern, celebrity chef Jonathan Sawyer's flagship restaurant, located on East 4th Street, Cleveland's vibrant downtown entertainment district.

Additional Resources

Chatbot Challenges: Talking Tech About Talking Tech

Wed, 2017-07-05 13:53
Despite the dizzying evolution of computer technology over the last three decades, the input/output process remains deeply dependent on fingers. True, I can now use my iPhone or Amazon Echo to request weather reports and ask bizarre questions of Turing Test candidates. However, most of my time spent interacting with a computer still requires my not-always-cooperative fingers. But those days are numbered, thanks to chatbots.

As with other innovations, there’s reality amid the chatbot hype, as I discovered when I posted several chatbot-related questions in a community forum. Among the responses were two accounts that prove that when it comes to chatbots, it’s not just talk.

Oracle ACE Leon Smiers, Center of Excellence lead for Oracle PaaS at Capgemini, based in the Netherlands, reports that his organization has already implemented chatbot projects using a variety of technologies, and has recently started a new chatbot project for the Dutch police that will make use of Oracle Technology.

According to Smiers, designing a chatbot project differs considerably from designing a standard user interface for a Web application or a mobile application. “The focus is on conversation rather than on transaction,” Smiers says.  “Chatbots are another channel in the interaction with customer, with the primary focus on delivering a fast track for providing answers or enabling transactions.” 

Smiers cites two unique challenges in developing chatbots. The first, and this should come as no surprise, is the complexity of language. As he explains, there are a variety of ways one might report that one’s bicycle was stolen. “My tandem is gone,” Smiers suggests, or “somebody nicked my iron horse,” amid nearly infinite variations. “With bots you need to able to understand the intent of a sentence, in singularity and in context of a conversation,” Smiers explains.

The other challenge? The sky-high expectations of end users and companies. “Chatbots are expected to deliver neuro-linguistic programming [NLP] and artificial intelligence in every possible way,” Smiers explains. “So we need to tone down the user expectations.” To that end Smiers’ team has created a Chatbot Maturity model, “to provide a roadmap and make it clear what can be expected in the first and consequent releases.”

Smiers and his team rely on a variety of tools and technologies to support chatbot development, including Apache Open NLP and Stanford NLP. “These can be implicitly available in tooling, such as the Intelligent Bot Services, but also explicitly used when calls via API’s are made to enrich the conversation,” Smiers explains. “These API calls need to be fed with the proper information from the question sentence in order to provide the right answer.”

Oracle ACE John Sim, a consultant with Fishbowl Solutions in the UK, reports that the Fishbowl team has built Atlas, a chatbot that was initially developed as an entry in Fishbowl’s annual hackathon event. “We are now using it internally to help to build up its intelligence through machine learning and natural language understanding capabilities,” Sim says. “Once we feel Atlas has built up enough wisdom, we plan to release him as an offering with integrations for SaaS and PaaS applications.”

The Fishbowl team did its homework before kicking off the Atlas project. “Our goal from the beginning was to make an intelligent bot and not simply an if-then-else bot,” Sim says. “We also wanted to write a user flow and look at common tasks where we could abstract the user interface and do the interactions through user intents. Our intent here was to enhance the user experience to quickly access content and get tasks completed effectively without going through a click form filling process stream.”

The Atlas project was fun, according to Sim, but it wasn’t without challenges. “The biggest ones were multilingual support and connecting user credentials so that Atlas only retrieves relevant info for the user,” Sim says. 

And the work continues. “We are now looking at areas where we can enhance Atlas, such as an administrative interface to allow users to review mapped credentials and his offerings and capabilities from outside of the chat window on Facebook and Slack,” Sim says. “We are excited about the future for Atlas and the use cases for bots overall. Who knows, bots could replace mobile apps. We shall see.”

How do chatbots figure in your future? Are you doing your homework to prepare to meet the challenges of this revolution in human-computer interaction? Post your comments below.

Additional Resources

Video: How Do You Get from a Tandy 1000 to the Moon?

Fri, 2017-06-30 07:00

During my first interview with Sean Phillips, recorded at Oracle Code in Washington DC, he went into technical detail about the role JavaFX played in his work for NASA on an application that plots space flight trajectories. Cool gig, right? So when I had another chance to talk to Sean, this time at last week's  Oracle Code event in Atlanta, I wanted to focus on his career, tracking his own trajectory from his first experiments with a Tandy 1000 computer to his current work helping spacecraft to get to the farthest reaches of our solar system. That's what you'll get in this video. After a brief recap of his Oracle Code Atlanta keynote session, Sean describes when he first caught the software development bug, and brings us up to the present and the NASA projects in which he is involved. Watch the video!

Additional Resources

Two New Articles on API Management and Microservices

Wed, 2017-06-28 12:38

Oracle ACE Director Luis Weir and ACE Associate Phil Wilkins, both from Capgemini, already teamed up to present API Management and Microservices: A Match Made in Heaven at the recent Oracle Code event in London, captured in the video above. Now the dynamic duo has collaborated again on a pair of articles now available on OTN.

Luis's contribution, 3rd-Generation API Management: From Proxies to Micro-Gateways, examines the confluence of cloud adoption, ntegration platform as a service, and microservices.

Phil's contribution, Registries: Use Cases for API Management and Microservices, explores the role of registries in a microservices environment and their relationship to API Management.

Taken together the articles offer a detailed view of what's happening in the confluence of two very hot topics. So read them already!

Additional Resources

 

 

 

 

Video: APIs and Microservices: Making the Right Choices for Your Mobile Apps

Mon, 2017-06-26 15:36

 “In the past few years the REST APIs that mobile apps use to access server resources have gotten a lot of prominence," observes, Parvez Syed Mohamed, Director of Product Management for Oracle Mobile Cloud Service. "But it’s still very difficult to figure out the right methods to browse and consume third-party APIs and to be able to get the right set of data to shrink down the payload so it works for mobile apps. It’s all about making the right choices for your mobile app. It’s also about making it more personalized, and you also have to worry about the security. All of these are topics that every single architect and mobile developer needs to worry about.” Parvez shares insight into meeting addressing those concerns in this interview recorded at Oracle Code Toronto, April 18, 2017.

 

Additional Resources

 

 

Video: 2 Minute Integration with Oracle Integration Cloud Service

Fri, 2017-06-23 07:00

More than just a tip, this video from Oracle ACE Robert van Molken and ACE Associate Phil Wilkins, actually demonstrates that you can set up an integration in Oracle Integration Cloud Service in under two minutes.  The video walks you step-by-step through a simple integration that uses REST and SOAP connections integrated using basic map data.

And these guys should know. Robert and Phil are the co-authors of Implementing Oracle Integration Cloud Service (2017, Packt Publishing). Robert also has a new book coming out next year, Blockchain Across Oracle, also from Packt.

Additional Resources

Podcast Show Notes: Zombie Devices and the Moons of Jupiter

Wed, 2017-06-21 09:38

Click to listenOver the past several weeks I’ve had the good fortune to conduct video interviews with various session presenters at the Oracle Code events in New York City, Washington DC, Toronto, and Atlanta, GA. Those interviews, as well as interviews conducted by my OTN colleagues at other Oracle Code events around the globe, are available on the Oracle Developer YouTube channel.

Among the interviews I conducted, two stood out for me because the topics covered, while rooted in the real world, looked forward into a world that borders on science fiction.

So this program will depart from the usual panel discussion format to bring you audio excerpts from those two interviews, in a format that allows you to consume the content while driving, walking, or doing other activities that require your eyes to be on the road rather than staring at a screen. Listen!

Maurice NaftalinUp first is a bit of my March 21st conversation in NYC with Maurice Naftalin. Maurice is a developer, researcher, and trainer with forty years experience in computing. He is the author of Mastering Lambdas: Java Programming in a Multicore World  (2014, Oracle Press), and co-author of Java Generics and Collections: Speed Up the Java Development Process (2006, O’Reilly). Maurice is a Java Champion, and a three-time JavaOne Rock Star award winner.

Maurice presented the session Open Sesame! Conversations With My Front Door at the Oracle Code event in New York City on March 21, 2017. In this segment of the podcast Maurice talks about the Raspberry Pi experiment that was the basis for his session, and shares his thoughts on the how the Internet of Things, chatbots, and other technologies are invading our homes.

Up next is Sean Phillips. Sean is a Principal Software Engineer with a.i. Solutions in Washington DC, where he specializes in Java and JavaFX development and rich-client programming using the NetBeans Platform. Sean currently serves as the lead software engineer for the NASA James Webb Space Telescope Flight Dynamics Ground System.

If you are reading this after 10:00am Eastern Daylight Time on June 22, 2017, Sean will have presented his keynote session, Deep Space Trajectory Design Software For Ocean World Orbiters and Human Space Flight, at the Oracle Code event in Atlanta, GA. However, I recorded my conversation with Sean at the Oracle Code event in Washington DC on March 27, 2017. In this segment of the podcast Sean talks about his work with JavaFX and the development of the Deep Space Trajectory Explorer (DSTE) software designed for NASA.

Additional Resources

Video: Chatbot Challenges - A Human Conversation

Fri, 2017-06-16 10:07

Chatbots won't make you rich, according to Frank Nimphius, Senior Principal Product Manager in the Oracle Mobile Platform Group. That takes a good business model. "But once you have a good business model, a chatbot can really help you to reach out to an audience that otherwise might not be interested in doing business with you," Frank says. Like millenials.

But as Frank explains, developing chatbots is not without its challenges. One such challenge is identifying design patterns that work with chatbots, just as there are design patterns for web applications and mobile applications. 

Another challenge Frank identifies is getting all of the artificial intelligence and machine learning that is required to understand natural language to work in the context of the application you're building. Will you have to get several technologies and put them together? Will you have to learn a lot of APIs?

Frank explores those issues and more in this interview recorded at the Oracle Code event in Toronto on April 18, 2017. Watch!

Additional Resources

 

Register Now for Oracle Code Online - June 20, 2017

Wed, 2017-06-14 12:09

Oracle Code OnlineIf you don't live in or near one of the 20 cities that have hosted, or will host, an Oracle Code event, no worries! Next week Oracle Code Online brings the event to you with 15 expert technical sessions in five tracks, covering database, server-side development, mobile development, full-stack web development, and DevOps and systems. Each session features live Q&A with the session presenters.

Kicking off the event is a special keynote session, Building and Deploying Chatbots and Microservices with Oracle Cloud Platform, by Siddhartha Agarwal, Oracle's VP of Product Management and Strategy.

Register now for this special event:

Full Stack Web Sessions
  • Making RESTful Web Services the Easy Way with Node.js
    by Dan McGhan, Developer Advocate, Oracle
  • Visual JavaScript Development for Everyone
    by Shay Shmeltzer, Director of Product Management, Mobile and Development Tools, Oracle
  • JavaScript Toolkit for Enterprise Applications
    by Oracle ACE Director Andreas Koop, CEO and IT Architect, enpit GmbH and Co. with Janis Krasemann, Developer, enpit GmbH and Co.
Mobile Development Sessions
  • Introduction to Platform Agnostic Hybrid App Development
    by Oracle ACE John Sim, Consultant, Fishbowl Solutions
  • Building Hybrid Mobile Apps with JavaScript and Cordova
    by Chris Muir, Senior Principal Mobility and Cloud Development Tools Product Manager, Oracle
  • The Rise of ChatBots in Enterprise Mobile Application Development
    by Frank Nimphius, Senior Principal Product Manager, Oracle Mobility and Development Tools Group
Register now!

Oracle Code: The Microservices Beat Goes On

Wed, 2017-06-14 08:07

drummersAs the Oracle Code tour makes its way around the world --- San Francisco, Austin, New York City, Washington DC, Toronto, London, Berlin, Prague, Moscow, Brussels, New Delhi, and Tokyo completed, Atlanta, Sao, Paolo, Mexico City, Rishon LeZion, Sydney, Beijing, Bangalore, and Seoul still to come -- the microservices drumbeat continues.

Microservice development is a key theme across all of the Oracle Code events, and session speakers at the various events have come at microservices from a variety of technical and conceptual angles. The videos listed below are among the most-watched microservices sessions and interviews from various cities on the tour.

Additional Resources

WebLogic, Docker, OCCS: Most Watched 2 Minute Tech Tips - June 5-11, 2017

Mon, 2017-06-12 10:22

Sure, you can read through page after page of documentation. But why bother when you can get useful technical tips in 2-minute video chunks? Here's this week's list of the most-watched Tech Tip videos.

And if you have a tip of your own to share, let's make it happen. Contact me: bob.rhubart@oracle.com

1 Running WebLogic Applications on Docker using the OCCS | Craig Barr
May 12, 2017
Last week: #7
5th Top 10 appearance 2 New Features in Oracle Database 12.2 | Chris Saxon
February 22, 2017
Last week: #3
16th Top 10 appearance 3 Heap Tables and Index Organized Tables in Oracle | Chris Saxon
March 4, 2015
Last week: #6
49th Top 10 appearance 4 Why Learn Oracle Identity and Access Management | Atul Kumar
February 24, 2016
Last Top 10 appearance: May 29, 2017
22nd Top 10 appearance 5 When to Use Oracle SOA Cloud Service | Robert van Molken
December 1, 2016
Last week: #2
20th Top 10 appearance 6 Using the Declarative Features in Oracle APEX | Joel Kallman
March 5, 2015
Last Top 10 appearance: March 21, 2016
2nd Top 10 appearance 7 Programming Languages for the Raspberry Pi | Lonneke Dikmans
August 12, 2015
Last week: #10
28th Top 10 appearance 8 Oracle GoldenGate for Big Data | Michael Rainey
August 12, 2016
Last Top 10 appearance: May 22, 2017
12th Top 10 appearance 9 Oracle Function Result Cache | Steven Feuerstein
February 11, 2016
Last Top 10 appearance: September 12, 2016
5th Top 10 appearance 10 Oracle EBS integration with Identity and Access Management for SSO | Atul Kumar
Feb 14, 2017
Last Top 10 appearance: May 8, 2017
6th Top 10 appearance Last Week's Top 10

Integration, DevOps, Testing: Most-Watched 2 Minute Tech Tips - May 29-June 4, 2017

Video: No Pain, No Gain - Getting Started With Containers

Fri, 2017-06-09 09:18

"How do I get started on containers?" Ashutosh Tripathi hears that question a lot.

"Not many people are doing these kind of things today in the production environment or even on a pilot basis, except for a few startups," he says. "One of the main reasons I see that enterprises are not using containers or Node.JS types of things is because they have monolithic applications built over a period of years, and it takes time to re-architect those applications."

As he explains, "the pain is, when you are adopting a new technology or new application, you may not be able to refactor those things that easily." But there is much to be gained by taking on that refactoring task and moving forward with adopting those next technologies.

"It could be Node.js, MongoDB, PHP or whatever," Tripathi says. "Is it right for the purpose based on what you're building? And if you are building applications using microservices architecture, that provides you the flexibility to build a technology stack with the programming language of your choice."

A platform specialist with Oracle, Tripathi presented the session Developing Node JS and Mongo DB Application Using Containers at the Oracle Code event in Washington DC. He shares more insight on the issues in the interview above.

Additional Resources

Developing Node JS and MongoDB Applications Using Containers
The complete session, as recorded at Oracle Code Washington DC.

Podcast: Microservices: Getting Real
A roundtable discussion featuring Chris Richardson, Adam Bien, Reza Rahman, and Karthik Gaekwad.

Docker in the Cloud: Oracle Container Cloud Service
Technical article by Oracle ACE Director Dr. Frank Munz

 

 

Integration, DevOps, Testing: Most-Watched 2 Minute Tech Tips - May 29-June 4, 2017

Mon, 2017-06-05 10:13

This week Oracle ACE Director Danilo Scheidel and ACE Sven Bernhardt jump to #1 for the first time since their tip debuted in Oct 2016. ACE Robert van Molken makes his 3rd consecutive Top 10 appearance, and coming in at #3, familiar face Chris Saxon's tip on new Database 12.2 features marks 15 consecutive weeks in the Top 10.

Congrats to all of those who made it into this week's most-watched list.

Where's your 2 Minute Tech Tip? Contact me: bob.rhubart@oracle.com

 

1 red-arrow-up-sml.png Integration, DevOps, and Testing | Schmeidel and Bernhardt
Published on Oct 4, 2016
Last Top 10 appearance: March 20, 2017
7th Top 10 appearance. 1st time at #1! 2 red-arrow-up-sml.png When to Use Oracle SOA Cloud Service | Robert van Molken
Published on Dec 1, 2016
Last week: #3
18th Top 10 appearance 3 red-arrow-up-sml.png New Features in Oracle Database 12.2 | Chris Saxon
Published on Feb 22, 2017
Last week: #4
15th Top 10 appearance 4 red-arrow-up-sml.png It's Not a Framework. It's Not a Library. It's Oracle JET | Geertjan Wielenga
Published on Aug 5, 2016
Last Top 10 appearance: March 6, 2017
8th Top 10 appearance 5 red-arrow-up-sml.png Orchestration vs. Choreography | Kelly Goetsch
Published on Aug 17, 2016
Last Top 10 appearance: May 22, 2017
13th Top 10 appearance 6 red-arrow-up-sml.png Heap Tables and Index Organized Tables in Oracle | Chris Saxon
Published on Mar 4, 2015
Last week: #9
48th Top 10 appearance 7 red-arrow-up-sml.png Running WebLogic Applications on Docker using the Oracle Container Cloud Service | Craig Barr
Published on May 12, 2017
Last week: #1
4th Top 10 appearance 8 red-arrow-up-sml.png Working with JSON and APEX | Dimitri Gielis
Published on May 18, 2015
Last Top 10 appearance: April 10, 2017
14th Top 10 appearance 9 red-arrow-up-sml.png JMX and WebLogic MBean Objects | Fevzi Korkutata
Published on Feb 7, 2017
Last Top 10 appearance: May 8, 2017
9th Top 10 appearance 10 red-arrow-up-sml.png Programming Languages for the Raspberry Pi | Lonneke Dikmans
Published on Aug 12, 2015
Last Top 10 appearance: May 1, 2017
27th Top 10 appearance

Containers, Microservices, SOA Cloud: Most-Watched 2 Min Tech Tips - May 22-28, 2017
Last week's Top 10

Video: Distributed Stream Processing Using the Java 8 Streams API

Fri, 2017-06-02 12:43

What is distributed stream processing and why does it matter?

"Java 8 came out with these really amazing language enhancements for Java developers," including the addition of streams, explains Oracle Cloud Engineering Group architect Brian Oliver. "Basically it lets you very elegantly describe declaratively what you want and how you want to process some data structures. So we can take a set or a map or a list that contains application data and you can say, well, I want to filter it on a map, I want to transform it. And you do that in a what we call functional programming. It's a natural way of writing quite complex algorithms in a very short period of time that you can basically read."

Now imagine if you could use that in a distributed environment. "When you're using streams in a Java process, all your data is basically in the Java process," says Brian. "So if I need to process a lot of data, I either have to have a very big Java process, or I have to keep the data outside. And so now I'm no longer using Java. And because I have to use some database technology or I have use some other APIs, I switch from being a Java developer to being an integrator with some other technology."

But there is a remedy. "We have these amazing capabilities in Java, and we're teaching everyone, and the community is excited about them," Brian explains, "so why don't we try to apply those concepts to distributed computing?"

The end result is that Java developers can use what they already know, "but on a much larger, grander scale," says Brian.

Watch the interview for more detail, and also check out Cloud Ready: Introduction to Distributed Streams, the complete video recording of Brian's Oracle Code session.

Additional Resources

 

 

Look Who's Talking: Creating a Great Chatbot User Experience

Wed, 2017-05-31 10:16

Chatbots represent an enormous opportunity for developers. But while aspects of chatbot development will be quite familiar, there are key differences that will require a shift in thinking, according to Joe Huang, product manager for Oracle's Mobile and Bot platforms.

"Traditionally, when we talk about application development, you're thinking about how to design the user interface, how to make the application easier to use," Joe says. "With chatbots, it's both different and also the same. It's the same in that you want to give the best conversational experiences for the end-user to be able to very quickly complete their operation, to find what they need to do through a chat interface. But it's also very different in that thinking about building a good experience changes from building a beautiful user interface to designing a conversation."

Want more of Joe's insight into chatbot development? Watch this interview recorded at Oracle Code Washington DC. And for a deeper dive, you can watch the video recordings of Joe's Oracle Code sessions:

Additional Resources

 

Video: CQRS or CRUD: Modeling Enterprise Applications

Wed, 2017-05-10 07:00

Java Champion Sebastian Daschner discusses the Command Query Responsibility Segregation (CQRS) method for modeling enterprise applications, and how it compares to the create, read, update, and delete (CRUD) method, particularly with regard to event sourcing.

Sebastian has been a very busy guy, having presented sessions at the Oracle Code events in New York, Toronto, and London, and even found time to record a 2 Minute Tech Tip on boosting your JavaEE productivity with Live Templates. You'll find links to that video and other resources below.

Additional Resources

Pages